簡體   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