PHP比较2个数组并更新一个数组的值

时间:2014-08-26 19:34:15

标签: php arrays

我目前有两个阵列:

$array1 = array("Option 1", "Option 2", "Option 3", "Option 4");
$array2 = array("Option 2", "Option 3", "Option 8");

我想看看$ array2中的哪些值可以在$ array1中找到。如果$ array2中有一个值可以在$ array1中找到(例如选项2),我想将该项的值更改为不同的值(例如确认)。另外,我想保留$ array2中项目的顺序。

3 个答案:

答案 0 :(得分:3)

foreach($array2 as &$value) {
    if(in_array($value,$array1)) {
        $value = 'Confirmed';
    }
}

答案 1 :(得分:1)

您可以使用array_intersect。

该功能的密钥保存的更清晰的例子:

<?php

$array1 = array(2, 4, 6, 8, 10, 12);
$array2 = array(1, 2, 3, 4, 5, 6);

var_dump(array_intersect($array1, $array2));
var_dump(array_intersect($array2, $array1));

?>

结果:

array(3) {
  [0]=> int(2)
  [1]=> int(4)
  [2]=> int(6)
}

array(3) {
  [1]=> int(2)
  [3]=> int(4)
  [5]=> int(6)
}

这使得记住将数组传递给函数的方向很重要。

您可以在http://php.net/manual/en/function.array-intersect.php

了解详情

答案 2 :(得分:1)

您可以使用array_map函数,映射所有值以查看$array1中对应的值并返回所需的消息,或返回常规值:

$array2 = array_map(function($a) use ($array1) {
    if (in_array($a, $array1)){
        return "confirmed";
    }
    return $a;
}, $array2);

print_r($array2);

输出:

Array
(
    [0] => confirmed
    [1] => confirmed
    [2] => Option 8
)