我有两个数组如下:
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的时候删除键和值。
如何做到这一点。我尝试unset()函数。但没用
答案 0 :(得分:1)
$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);
答案 1 :(得分:1)
是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
。