array_diff问题

时间:2011-01-20 00:47:29

标签: php arrays

我很困惑array_diff行为

为什么在diff数组上不存在类型? 你知道如何解决这个问题吗?

-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));

-result

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

2 个答案:

答案 0 :(得分:18)

我相信你想使用array_diff_assoc

http://www.php.net/manual/en/function.array-diff-assoc.php

答案 1 :(得分:5)

array_diff对数组的进行操作,并忽略键。

因为第一个数组中genre的值为1,这意味着如果第二个数组中的任何键的值1出现,然后genre键将从第一个数组中删除。

看看你的数组没有键,你会明白我的意思。您基本上有两个值列表['0','v2','1','text','us','1']['v1','v2','0','text','canada','1']。第一个列表中唯一未出现在第二个列表中的值是'us'

我猜你可能想看看array_key_diff()array_diff_assoc()