首页 > 解决方案 > 在多维数组中搜索包含特定值的键并删除不包含特定值的键

问题描述

我有一个包含关键字(电子邮件、购物车等)的多维数组,每个关键字都有一个特定的应用程序列表(EmailAppA..)及其排名(1,2..)。

Array
(
    [email] => Array
        (
            [EmailAppA] => 1
            [EmailAppB] => 2
            [EmailAppC] => 4
        )

    [cart] => Array
        (
            [CartAppA] => 1
            [CartAppB] => 2
            [MyApp] => 4
        )
    [reviews] => Array
        (
            [reviewAppA] => 1
            [reviewAppB] => 4
            [reviewAppC] => 5
            [MyApp] => 7

        )

我想要实现的是在数组中循环,找到包含应用程序“MyApp”的所有键,并在最终删除不包含值“MyApp”的键。该数组必须仅保留购物车和评论及其值,电子邮件已被删除。

到目前为止我的代码,但我被卡住了:

foreach ($mappedStuff as $keywords=>$value){
    foreach ($value as $apps=>$rank){
        if($apps != 'MyApp'){
          unset($mappedStuff[$keywords];
        }
    }
}

标签: phparraysmultidimensional-arrayforeach

解决方案


您可以使用array_walk

array_walk($a, function($v, $k) use (&$a){
  if(!array_key_exists('MyApp', $v)) unset($a[$k]);
});

https://3v4l.org/gtEIt


推荐阅读