在多维数组中搜索哪些键包含特定值并删除不包含的键

我有一个包含关键字(电子邮件、购物车等)的多维数组,每个关键字都有一个特定的应用程序列表(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];

        }

    }

}


互换的青春
浏览 132回答 3
3回答

凤凰求蛊

您可以使用array_filter过滤数组。在其回调函数中,您将查找“MyApp”的存在。如果它不存在,回调函数将返回 false,因此当前键将被过滤掉。$filtered = array_filter($array, function($apps){   return in_array('MyApp', $apps);});我刚刚注意到,你想搜索一个关键的存在,而不是价值,所以只需将我的代码更改为:$filtered = array_filter($array, function($apps){   return isset($apps['MyApp']);});
打开App,查看更多内容
随时随地看视频慕课网APP