php array_diff 错误结果
php array_diff wrong reuslt
你好,我在 2 个数组之间有一个 array_dif 函数,结果不是这样 should.I 不明白为什么它不 return 状态不同。第一个数组是数据,第二个是行,第三个是结果。在结果中它也应该是状态,因为值不同。
$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"
}
$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));
array_dif 是单向函数 ("Compares array1 against one or more other arrays and returns the values in array1 that are not present in any of the other arrays."- https://www.php.net/manual/en/function.array-diff.php).
如果你想要所有差异,你必须调用它两次:array_dif($first, $second) 和 array_dif($second, $one) 并可选择合并结果。
array_diff
仅检查值。
因为您的第二个数组包含 ["status_intermediar"]=> string(1) "2"
它会找到值,所以它不会将其视为差异
如果您想同时检查键和值,您应该使用 array_diff_assoc
此外,如果您想从两个数组中找到所有不同的值,您应该运行两次
$difference1=array_diff_assoc($array1,$array2);
$difference2=array_diff_assoc($array2,$array1);
你好,我在 2 个数组之间有一个 array_dif 函数,结果不是这样 should.I 不明白为什么它不 return 状态不同。第一个数组是数据,第二个是行,第三个是结果。在结果中它也应该是状态,因为值不同。
$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"
}
$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));
array_dif 是单向函数 ("Compares array1 against one or more other arrays and returns the values in array1 that are not present in any of the other arrays."- https://www.php.net/manual/en/function.array-diff.php).
如果你想要所有差异,你必须调用它两次:array_dif($first, $second) 和 array_dif($second, $one) 并可选择合并结果。
array_diff
仅检查值。
因为您的第二个数组包含 ["status_intermediar"]=> string(1) "2"
它会找到值,所以它不会将其视为差异
如果您想同时检查键和值,您应该使用 array_diff_assoc
此外,如果您想从两个数组中找到所有不同的值,您应该运行两次
$difference1=array_diff_assoc($array1,$array2);
$difference2=array_diff_assoc($array2,$array1);