2011-01-20 5 views
5

Estoy confundiendo comportamiento array_diffproblema matriz_diff

¿por qué no existe género en diff array? ¿Sabes cómo resolver el problema?

-code

<?php 
$array1 = array 
(
    'value01' => '0', 
    'value02' => 'v2', 
    'genre' => '1', 
    'type' => 'text', 
    'contry' => 'us', 
    'data' => '1', 
); 
$array2 = array 
(
    'value01' => 'v1', 
    'value02' => 'v2', 
    'genre' => '0', 
    'type' => 'text', 
    'contry' => 'canada', 
    'data' => '1', 
); 

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

-resultado

$ php diff.php 
Array 
(
    [contry] => us 
) 

Respuesta

5

array_diff opera sobre los valores de la matriz, e ignora las teclas.

Debido a que el valor de genre en su primera matriz es 1, lo que significa que si el valor 1 se produce para cualquier clave en la segunda matriz, a continuación, la tecla genre será retirado de la primera matriz.

Mire sus matrices sin las claves, y verá lo que quiero decir. Básicamente, tiene dos listas de valores, ['0','v2','1','text','us','1'] y ['v1','v2','0','text','canada','1']. El único valor de la primera lista que no aparece en el segundo es 'us'.

Supongo que probablemente quiera echar un vistazo a array_key_diff() o array_diff_assoc().