我是php的新手,我的问题是我有2个数组,第一个来自另一个页面,通过post并通过post_get读入数组
Array (
[0] => 93
[1] => 25
[2] => 5
[3] => 4
[4] => 36
)
我的第二个数组看起来像这样
Array (
[25] => Estonia
[20] => France
[4] => Germany
[5] => Greece
[75] => Hungary
[93] => India
[36] => Italy
)
我想要做的是,如果数组看起来像第一个,那么它使用数组中的数字,并在第二个数组的帮助下创建一个只包含
的新数组Array (
[0] => India
[1] => Estonia
[2] => Greece
[3] => Germany
[4] => Italy
)
使用此功能
$group is the first array
$array is the one with the country names
foreach ($group as $value) {
if (in_array($value, $array)) {
}
else {
echo "The group ".$value." does not exist";
}
}
答案 0 :(得分:3)
你可以通过很多方式做到这一点。这是一个简单的:
$new = [];
foreach ($group as $groupId) {
if (isset($array[$groupId])) {
$new[] = $array[$groupId];
}
}
答案 1 :(得分:2)
我会这样做。翻转$group
并找到与$array
的关键交叉点:
$result = array_intersect_key($array, array_flip($group));
那将保留键,所以如果你想重新索引:
$result = array_values(array_intersect_key($array2, array_flip($array1)));
答案 2 :(得分:1)
无需使用in_array
只需添加一些if
检查和两个foreach
循环,并将第一个数组的键用于第二个数组的索引。
点子:
$array3 = array();
foreach($array1 as $key) {
if(isset($array2[$key])) { // add some checking just so make sure no undefined indices
$array3[] = $array2[$key];
}
}
答案 3 :(得分:1)
使用array_map
函数的另一种替代解决方案:
$result = array_map(function($v) use($array){
return isset($array[$v])? $array[$v] : $v;
}, $group);