【问题标题】:Can I get only the array that meets the criteria in the total array in PHP? [duplicate]我可以在PHP的总数组中只获取符合条件的数组吗? [复制]
【发布时间】:2019-10-27 19:38:34
【问题描述】:

有一个完整的数组和一个特定的数组。

我只想获取适合整个数组中特定元素的部分。

例如,我有两个数组。

$all_array = array('a'=>'1', 'b'=>'2', 'c'=>'3', 'd'=>'4', 'e'=>'5')

$find_array = array('b', 'd', 'e')

那我要$result_array

array('b'=>'2', 'd'=>'4', 'e'=>'5');array('2', '4', '5');

有没有办法得到结果?

【问题讨论】:

  • 是的,有办法。现在展示一些解决你的问题的努力。
  • 您至少尝试过简单的foreach 解决方案吗?
  • 谢谢大家。我可以通过使用foreach,array_key_exists等来解决它。我想知道是否还有另一种最好的方法。

标签: php arrays


【解决方案1】:

一个班轮array_intersect_key($all_array, array_flip($find_array));

【讨论】:

  • 哦,对不起。下次我会搜索整个stackoverflow,以免重复答案
  • 无意冒犯 - 这是通过键对过滤器数组进行谷歌搜索时的第一个答案(我认为这是最好的解决方案)。而且我还认为这个问题的标题是针对问题本身的一般性 - 这个标题表明答案将是 array_filter ,它以函数为参数
【解决方案2】:

foreach()$find_array 并检查$all_array,如果存在,将其存储在新数组中。

$all_array = array('a'=>'1', 'b'=>'2', 'c'=>'3', 'd'=>'4', 'e'=>'5');

$find_array = array('b', 'd', 'e');
$new = array();
foreach($find_array as $val){
    if(isset($all_array[$val])){
        $new[$val] = $all_array[$val];
    }
}
print_r($new);

Demo

【讨论】:

    【解决方案3】:

    你可以使用array_walk

    $r=[];
    array_walk($find_array, function($v,$k) use($all_array,&$r){$r[$v] = $all_array[$v];});
    

    DEMO

    【讨论】:

      猜你喜欢
      • 2015-10-09
      • 2013-04-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-24
      • 2013-06-15
      • 2015-07-11
      相关资源
      最近更新 更多