从具有键作为另一个数组的值的数组值中提取

时间:2017-09-22 15:33:46

标签: php arrays

比告诉更好的表现。

$first = array(
    3=>"Banana", 
    4=>"Apple", 
    6=>"Lemon",
    7=>"Pineapple",
    8=>"Peach"
);

$second = array(4,7,8);

(请注意:第一个是关联数组,它可以有孔) 结果应该是

$result = array(
    "Apple", 
    "Pineapple",
    "Peach"
);

有什么好主意吗? 谢谢

3 个答案:

答案 0 :(得分:3)

我们正在使用array_intersect_keyarray_fliparray_values。这个单衬里就足够了。

  

1。 array_values将返回数组的值。

     

2。 array_flip会将数组翻转到keysvalues

     

3。 array_intersect_key将根据交叉键上的两个输入数组返回数组。

Try this code snippet here

print_r(
     array_values(
         array_intersect_key(
                  $first, array_flip($second))));

答案 1 :(得分:0)

只需一个简单的foreach循环即可。并且isset()在尝试读取之前检查索引是否存在于第一个数组中:

$first = array(
    3=>"Banana", 
    4=>"Apple", 
    6=>"Lemon",
    7=>"Pineapple",
    8=>"Peach"
);
$second = array(4,7,8);
$result = array();

foreach($second as $i)
{
    if (isset($first[$i])) $result[] = $first[$i];
}

var_dump($result);

答案 2 :(得分:0)

嗨,你可以这样使用

$ first = array(

3=>"Banana",
4=>"Apple", 
6=>"Lemon",
7=>"Pineapple",
8=>"Peach"

);

$ second = array(4,7,8);

foreach($ first as $ key => $ val) {

if(array_search($ key,$ second)=== false)     {

未设置($第一[$键]);     }

}

的print_r($第一);出口;