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

vojdkbi0  于 2022-10-22  发布在  PHP
关注(0)|答案(3)|浏览(306)

展示胜于讲述。

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

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

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

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

有什么好主意吗?非常感谢。

ozxc1zmp

ozxc1zmp1#

这里我们使用的是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))));
o3imoua4

o3imoua42#

只需一个简单的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);
dphi5xsq

dphi5xsq3#

你可以这样使用

$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) {
        unset($first[$key]);
    }
}

print_r($first);
exit;

相关问题