我目前有两个阵列:
$array1 = array("Option 1", "Option 2", "Option 3", "Option 4");
$array2 = array("Option 2", "Option 3", "Option 8");
我想看看$ array2中的哪些值可以在$ array1中找到。如果$ array2中有一个值可以在$ array1中找到(例如选项2),我想将该项的值更改为不同的值(例如确认)。另外,我想保留$ array2中项目的顺序。
答案 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)
}
这使得记住将数组传递给函数的方向很重要。
了解详情答案 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
)