首页 > 解决方案 > PHP重新创建数组,如果它包含某些值

问题描述

我有$fruits_arr

Array
(
    [0] => Array
        (
            [id] => 213
            [fruit] => banana
        )

    [1] => Array
        (
            [id] => 438
            [fruit] => apple
        )

    [2] => Array
        (
            [id] => 154
            [fruit] => peach
        )
)

并且$ids_arr

Array ( 
  [0] => 213
  [1] => 154 
)

我想重新创建$fruits_arr只有数组项id等于$ids_arr. 我还想维护$fruits_arr.

我正在使用以下内容:

$selected_fruits = array();

foreach( $fruits_arr as $fruit ) :
    if ( in_array( $fruit['id'], $ids_arr ) ) :
        $selected_fruits[] = $fruit;
    endif;
endforeach;

print_r( $selected_fruits );

它似乎有效,但我想知道在最新的 PHP 版本中是否有更短、更好的方法来完成此任务。

标签: phparrays

解决方案


这不是更短或更新的方法,但也许不是为每次迭代执行 in_array ,您可以使用 array_flip 然后使用isset来检查键:

$ids_arr = array_flip($ids_arr);
$selected_fruits = [];

foreach ($fruits_arr as $k =>  $fruit) {
    if (isset($ids_arr[$fruit["id"]])) {
        $selected_fruits[$k] = $fruit;
    }
}

php演示


推荐阅读