我正在尝试使用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));
答案 0 :(得分:2)
array_diff
会返回$user
中$columnsToExclude
中没有匹配值的所有值。 $columnsToExclude
中的值为"密码"和"电话"。 $user
中不存在这些值。结果是预料之中的。你想在键上做这个差异,你还需要制作"密码"和"电话"数组中的键,而不是值:
array_diff_key($users, array_flip($columnsToExclude))