0

我有两个数组,想检查一下它的值是否有任何差异。我有两个解决方案(如下),但我认为应该有更好的方法我不知道。

数据

$old_data = array(
    "name" => "Mister X",
    "age" => 43
);

$new_data = array(
    "name" => "Mister X",
    "age" => 44
);

解决方案 A

如果 Integer 的格式类似于字符串,则不起作用:44 与“44”。对我来说,对数组进行编码似乎也很脏。

if (json_encode($old_data) != json_encode($new_data)) {
    echo "there's a difference.";
}

解决方案 B

构建两个数组值的字符串并比较它们。

function array_values_to_string($array) {
    $str = "";
    foreach ($array as $key => $value) {
        $str .= $value;
    }
    return $str;
}

if (array_values_to_string($array_old) != array_values_to_string($array_new)) {
    echo "there's a difference.";
}
4

1 回答 1

5

使用http://us3.php.net/array_diff

<?php
$old_data = array(
  "name" => "Mister X",
  "age" => 43
);

$new_data = array(
  "name" => "Mister X",
  "age" => 44
);

print_r(array_diff($old_data, $new_data));
?>

这将输出:

Array ( [age] => 43 ) 
于 2013-04-30T21:42:10.883 回答