我使用这段代码:
$new = array(
"123" => "a",
"456" => "b"
);
$old = array(
"123" => "a",
"456" => "b"
);
然后 $new
数组变成这样:
$new = array(
"456" => "b",
"123" => "c",
"789" => "e"
);
如您所见,$new
数组的数量增加了,元素的顺序发生了变化,键 123
的值也发生了变化。我需要将 $new
数组与 $old
数组进行比较,并仅捕获对键 123
处的值所做的更改,而不关心顺序和元素的数量。我试过:
$result = array_diff( $new, $old );
print_r( $result );
输出:
Array ( [123] => c [789] => e )
最佳答案
更新。相当困惑。现在我想我们明白了
$old = array(
"123" => "a",
"456" => "b"
);
$new = array(
"456" => "b",
"123" => "c", // catch this (element in old array that is changed)
"789" => "e"
);
$new2 = array();
foreach ($new as $key => $new_val)
{
if (isset($old[$key])) // belongs to old array?
{
if ($old[$key] != $new_val) // has changed?
$new2[$key] = $new[$key]; // catch it
}
}
// output $new2:
array (
123 => 'c',
)
关于php - 在php中比较两个数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14101557/