PHP的array_diff错误重用

时间:2019-06-10 08:54:24

标签: php arrays array-difference

你好,我在2个数组之间有一个array_dif函数,结果不是应该的。我不明白为什么它不返回状态差。第一个数组是数据,第二个是行,第三个是结果。结果中它也应该是状态,因为值是不同的。

$result = array_diff($data,$row );
array(9) {
  ["scooter_id"]=>
  string(6) "RO0001"
  ["battery_lvl"]=>
  string(2) "80"
  ["lat"]=>
  string(9) "44.312150"
  ["lng"]=>
  string(9) "23.872900"
  ["alt"]=>
  string(1) "0"
  ["speed"]=>
  string(1) "0"
  ["status"]=>
  string(1) "2"
  ["ip"]=>
  string(14) "213.233.101.62"
  ["port"]=>
  int(24600)
}

array(11) {
  ["battery_lvl"]=>
  string(2) "80"
  ["nr_satelites"]=>
  string(1) "1"
  ["lat"]=>
  string(9) "44.312154"
  ["longi"]=>
  string(9) "23.873007"
  ["alt"]=>
  string(1) "0"
  ["speed"]=>
  string(1) "0"
  ["status"]=>
  string(1) "1"
  ["location"]=>
  string(7) "romania"
  ["ip"]=>
  string(14) "213.233.101.62"
  ["port"]=>
  string(5) "24600"
  ["status_intermediar"]=>
  string(1) "2"
}

array(3) {
  ["scooter_id"]=>
  string(6) "RO0001"
  ["lat"]=>
  string(9) "44.312150"
  ["lng"]=>
  string(9) "23.872900"
}

3 个答案:

答案 0 :(得分:1)

$array_difference1 = array_merge(array_diff($array1, $array2),
    array_diff($array2, $array1));

$array_differnce = array_merge(array_diff($array_difference1, $array3),
    array_diff($array3, $array_difference1));

答案 1 :(得分:1)

array_dif是一种函数(“将array1与一个或多个其他数组进行比较,并返回array1中其他数组中不存在的值。”-https://www.php.net/manual/en/function.array-diff.php)。

如果要使用所有差异,则必须调用两次:array_dif($ first,$ second)和array_dif($ second,$ one)并有选择地合并结果。

答案 2 :(得分:0)

array_diff仅检查值。

因为您的第二个数组包含["status_intermediar"]=> string(1) "2",所以它会找到该值,因此不会将其视为差异

如果要同时检查键和值,则应使用array_diff_assoc

此外,如果您想从两个数组中查找所有不同的值,则应运行两次

$difference1=array_diff_assoc($array1,$array2);

$difference2=array_diff_assoc($array2,$array1);