Array_diff不排除数组中的元素

时间:2015-03-03 16:14:12

标签: php

我正在尝试使用array_diff从数组中排除某些元素。根据文档:“返回一个数组,其中包含array1中任何其他数组中不存在的所有条目。”

在下面的代码中,我有一个数组,表示请求用户时从数据库返回的数据。我有另一个数组,其中包含我不想包含在数组中的元素。这是代码......

$user = array(
    'id' => '9',
    'password' => 'CRYPT_BLOWFISH HASH',
    'username' => 'Billy',
    'phone' => '+447777777777');

$columnsToExclude = array('password', 'phone');

var_dump(array_diff($user, $columnsToExclude));

我不理解我做错了什么,除非我不能使用顺序数组作为第二个参数。

我做错了什么?

修改

正如评论中所建议的那样,我尝试了array_diff_key并得到了同样的结论 结果

array_diff_key($user, $columnsToExclude));

1 个答案:

答案 0 :(得分:2)

array_diff会返回$user$columnsToExclude中没有匹配值的所有值。 $columnsToExclude中的值为"密码"和"电话"。 $user中不存在这些。结果是预料之中的。你想在上做这个差异,你还需要制作"密码"和"电话"数组中的,而不是值:

array_diff_key($users, array_flip($columnsToExclude))