繁体   English   中英

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

[英]PHP compare 2 arrays and update values of one array

我目前有两个数组:

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

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

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

您可以使用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

您可以使用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
)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM