繁体   English   中英

如何在PHP中比较两个数组与条件

[英]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删除falsenull''0

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM