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

时间:2016-05-24 07:27:00

标签: php arrays

我有两个数组如下:

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()函数。但没用

2 个答案:

答案 0 :(得分:1)

您可以使用 https://github.com/Azure/azure-iot-sdks/blob/master/java/service/iothub-service-sdk/src/main/java/com/microsoft/azure/iot/service/auth/IotHubServiceSasToken.java 删除空元素:

$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删除了falsenull''0