[英]How to compare two array with condition in php
我有两个像下面这样的数组:
Array_1:($ array1-打印数组后)
Array ( [companyid] => 589 [company_name] => log_tracking_24 [username] => admin@log24.com [emp_count] => 0 [user_id] => 764 [module_expenses_benefit] => 1 [module_time_attendance] => 1 [module_bank_ftp] => 0 )
Array_2:($ array2-打印数组后)
Array ( [company_name] => log_tracking_241 [username] => admin@log241.com [password] => [cpassword] => [emp_count] => [module_expenses_benefit] => on [user_id] => 764 [companyid] => 589 )
我比较两个数组并获得不同的值。 为此,我尝试以下方法,
array_diff($array1,$array2);
最后我得到以下结果:
Array ( [company_name] => log_tracking_24 [username] => admin@log24.com [emp_count] => 0 [module_expenses_benefit] => 1 [module_time_attendance] => 1 [module_bank_ftp] => 0 )
但是我想要的是
在我的第一个数组中: $array1['emp_count']
的值为0,而我的第二个数组: $array2['emp_count']
的值为Null()。
在这种情况下,我想在array_diff的同时删除键和vlaue。
这个怎么做。 我尝试了unset()函数。 但没有用。
您可以使用array_filter删除空元素:
$emptyRemoved = array_filter($linksArray);
删除值0并清空。 您可以使用以下内容:
$emptyRemoved = remove_empty($linksArray);
function remove_empty($array) {
return array_filter($array, '_remove_zero');
}
function _remove_zero($value) {
return !empty($value) && $value === 0;
}
将两个数组都传递给remove_empty()
函数,然后使用array_diff()
$arr1 = remove_empty($array1);
$arr2 = remove_empty($array2);
array_diff($arr1, $arr2);
是的, array_filter
为您完成了工作。 只需使用:
array_diff(array_filter($array1), array_filter($array2));
参见示例:
$entry = array(
0 => 'foo',
1 => false,
2 => -1,
3 => null,
4 => '',
5 => 0
);
print_r(array_filter($entry)); //Array ( [0] => foo [2] => -1 )
因此,array_filter删除false
, null
, ''
和0
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.