PHP 2数组使用一个来从另一个中选择

时间:2016-12-01 21:45:20

标签: php arrays foreach

我是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";

}
}

4 个答案:

答案 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);