Php 数组_diff不从数组中排除元素

Php 数组_diff不从数组中排除元素,php,Php,我试图使用array\u diff从数组中排除某些元素。根据文档:“返回一个数组,该数组包含来自array1的所有条目,这些条目在任何其他数组中都不存在。” 在下面的代码中,我有一个数组,表示请求用户时从数据库返回的数据。我有另一个数组,其中包含我不想包含在数组中的元素。这是代码 $user = array( 'id' => '9', 'password' => 'CRYPT_BLOWFISH HASH', 'username' => 'Billy',

我试图使用
array\u 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\u diff\u key
,得到了相同的结果 结果

array_diff_key($user, $columnsToExclude));

array_diff
$user
返回所有在
$columnsToExclude
中没有匹配值的值。
$columnsToExclude
中的值是“密码”和“电话”。
$user
中不存在这些值。结果是意料之中的。您需要在按键上进行此区分,还需要在数组中设置“密码”和“电话”按键,而不是值:

array_diff_key($users, array_flip($columnsToExclude))

array\u diff
正在处理值而不是键。请尝试
array\u diff\u key