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