php - 在php中比较两个数组

标签 php arrays

我使用这段代码:

 $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/

相关文章:

php - 扩展 Zend_form_element_select,错误消失

php - 适用于 Mac 的独立 Web 服务器(PHP、MySQL)

php - 警告 : preg_match() [function. preg-match]:未知修饰符

javascript - 额外的斜杠出现在 json 数组中

c - 用指针填充 C 数组

php - 在PHP中的另一个类中扩展一个类

javascript - 在 php javascript 之后动态插入行

C 数组到指针

arrays - "delete_at"方法只删除偶数数组元素

C++ 结构值丢失