vacio recorrer length functions elementos ejemplos declarar asociativo array agregar php arrays

recorrer - php array functions



+ operador para matriz en PHP? (8)

$test = array(''hi''); $test += array(''test'',''oh''); var_dump($test);

¿Qué significa + para array en PHP?


  1. La operación Array plus trata a todas las matrices como una matriz assoc.
  2. Cuando se mantenga el conflicto clave durante el más, el valor izquierdo (anterior)

Publiqué el código a continuación para aclarar las cosas.

$a + $b = array_plus($a, $b)

function array_plus($a, $b){ $results = array(); foreach($a as $k=>$v) if(!isset($results[$k]))$results[$k] = $v; foreach($b as $k=>$v) if(!isset($results[$k]))$results[$k] = $v; return $results; }


Anexará la nueva matriz a la anterior.


Citando del documentation

El operador + devuelve la matriz de la derecha anexa a la matriz de la izquierda; para las claves que existen en ambas matrices, se usarán los elementos de la matriz de la izquierda y se ignorarán los elementos coincidentes de la matriz de la derecha.

Entonces si lo haces

$array1 = [''one'', ''two'', ''foo'' => ''bar'']; $array2 = [''three'', ''four'', ''five'', ''foo'' => ''baz'']; print_r($array1 + $array2);

Conseguirás

Array ( [0] => one // preserved from $array1 (left-hand array) [1] => two // preserved from $array1 (left-hand array) [foo] => bar // preserved from $array1 (left-hand array) [2] => five // added from $array2 (right-hand array) )

Entonces la lógica de + es equivalente al siguiente fragmento:

$union = $array1; foreach ($array2 as $key => $value) { if (false === array_key_exists($key, $union)) { $union[$key] = $value; } }

Si está interesado en los detalles de la implementación del nivel C, diríjase a

Tenga en cuenta que ese + es diferente de cómo array_merge() combinaría las matrices:

print_r(array_merge($array1, $array2));

te daría

Array ( [0] => one // preserved from $array1 [1] => two // preserved from $array1 [foo] => baz // overwritten from $array2 [2] => three // appended from $array2 [3] => four // appended from $array2 [4] => five // appended from $array2 )

Vea las páginas enlazadas para más ejemplos.


Cuidado con las teclas numéricas, si deben conservarse o si no desea perder nada

$a = array(2 => "a2", 4 => "a4", 5 => "a5"); $b = array(1 => "b1", 3 => "b3", 4 => "b4");

Unión

print_r($a+$b); Array ( [2] => a2 [4] => a4 [5] => a5 [1] => b1 [3] => b3 )

unir

print_r(array_merge($a, $b)); Array ( [0] => a2 [1] => a4 [2] => a5 [3] => b1 [4] => b3 [5] => b4 )


El mejor ejemplo que encontré para usar esto está en una matriz de configuración.

$user_vars = array("username"=>"John Doe"); $default_vars = array("username"=>"Unknown", "email"=>"[email protected]"); $config = $user_vars + $default_vars;

El $default_vars , como sugiere, es la matriz de valores predeterminados. La matriz $user_vars sobrescribirá los valores definidos en $default_vars . Todos los valores perdidos en $user_vars ahora son los valores predeterminados de $default_vars .

Esto print_r como:

Array(2){ "username" => "John Doe", "email" => "[email protected]" }

¡Espero que esto ayude!


El operador + produce los mismos resultados que array_replace() . Sin embargo, dado que los argumentos del operador están invertidos, el orden de la matriz resultante también puede ser diferente.

Expandiendo en otro ejemplo de esta página:

$array1 = array(''one'', ''two'', ''foo'' => ''bar''); $array2 = array(''three'', ''four'', ''five'', ''foo'' => ''baz''); print_r($array1 + $array2); print_r(array_replace($array2, $array1)); //note reversed argument order

productos:

Array ( [0] => one // preserved from $array1 [1] => two // preserved from $array1 [foo] => bar // preserved from $array1 [2] => five // added from $array2 ) Array ( [0] => one // preserved from $array1 [1] => two // preserved from $array1 [2] => five // added from $array2 [foo] => bar // preserved from $array1 )


Este operador toma la unión de dos matrices (igual que array_merge, excepto que con array_merge las claves duplicadas se sobrescriben).

La documentación para operadores de array se encuentra documentation .


$var1 = "example"; $var2 = "test"; $output = array_merge((array)$var1,(array)$var2); print_r($output);

Matriz ([0] => ejemplo [1] => prueba)