基于价值的多维数组元素删除 [英] Delete element from multidimensional-array based on value

查看:143
本文介绍了基于价值的多维数组元素删除的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图删除基于值多维数组元素。在这种情况下,如果一个子阵列的主要年的值是2011我想该子阵列出来。

只是为了记录:我运行PHP 5.2

我的数组是这样的:

 阵列

    [0] =>排列
        (
            [filmId] => 61359
            [URL] => http://www.movi​​emeter.nl/film/61359
            [标题] =>势不可挡
            [alternative_title] =>
            [同期] => 2011
            [缩略图] => http://www.movi​​emeter.nl/images/covers/thumbs/61000/61359.jpg
            [普通] => 0
            [votes_count] => 0
            [相似] => 100.00
            [directors_text] => geregisseerd门理查德·哈里森
            [actors_text] =>遇到陈Shilony,鲁本·克罗恩大卫·鲍威尔
            [genres_text] =>剧情/ Komedie
            [时间] => 90
        )
    [1] =>排列
        (
            [filmId] => 87923
            [URL] => http://www.movi​​emeter.nl/film/87923
            [标题] =>势不可挡
            [alternative_title] =>
            [同期] => 2011
            [缩略图] => http://www.movi​​emeter.nl/images/covers/thumbs/87000/87923.jpg
            [普通] => 0
            [votes_count] => 0
            [相似] => 100.00
            [directors_text] => geregisseerd门实例主任
            [actors_text] =>会见演员1,2男演员恩演员3
            [genres_text] =>剧情/ Komedie
            [时间] => 90
        )
    [2] =>排列
        (
            [filmId] => 68593
            [URL] => http://www.movi​​emeter.nl/film/68593
            [标题] =>势不可挡
            [alternative_title] =>
            [同期] => 2010
            [缩略图] => http://www.movi​​emeter.nl/images/covers/thumbs/68000/68593.jpg
            [普通] => 3.3
            [votes_count] => 191
            [相似] => 100.00
            [directors_text] => geregisseerd门托尼·斯科特
            [actors_text] =>遇到丹泽尔·华盛顿,克里斯·派恩恩罗莎里奥·道森
            [genres_text] => Actie /惊悚
            [时间] => 98
        )
    [3] =>排列
        (
            [filmId] => 17931
            [URL] => http://www.movi​​emeter.nl/film/17931
            [标题] =>势不可挡
            [alternative_title] =>九死一生
            [同期] => 2004年
            [缩略图] => http://www.movi​​emeter.nl/images/covers/thumbs/17000/17931.jpg
            [普通] => 2.64
            [votes_count] => 237
            [相似] => 100.00
            [directors_text] => geregisseerd门大卫·卡森
            [actors_text] =>遇到韦斯利·斯奈普斯,杰奎琳·奥拉德丝恩标记Sheppard
            [genres_text] => Actie /惊悚
            [时间] => 96
        )


解决方案

试试这个:

 函数removeElementWithValue($数组$关键,$值){
     的foreach($数组作为$子项= GT; $子阵列){
          如果($子数组[$关键] == $值){
               未设置($数组[$子键]);
          }
     }
     返回$阵列;
}

然后,你会说它是这样的:

  $阵列= removeElementWithValue($数组,年,2011年);

I'm trying to delete elements from a multidimensional-array based on a value. In this case if a sub-array's key 'year' has the value 2011 I want that sub-array out.

Just for the record: i'm running PHP 5.2.

My array looks like this:

Array
(
    [0] => Array
        (
            [filmId] => 61359
            [url] => http://www.moviemeter.nl/film/61359
            [title] => Unstoppable
            [alternative_title] => 
            [year] => 2011
            [thumbnail] => http://www.moviemeter.nl/images/covers/thumbs/61000/61359.jpg
            [average] => 0
            [votes_count] => 0
            [similarity] => 100.00
            [directors_text] => geregisseerd door Richard Harrison
            [actors_text] => met Chen Shilony, Ruben Crow en David Powell
            [genres_text] => Drama / Komedie
            [duration] => 90
        )
    [1] => Array
        (
            [filmId] => 87923
            [url] => http://www.moviemeter.nl/film/87923
            [title] => Unstoppable
            [alternative_title] => 
            [year] => 2011
            [thumbnail] => http://www.moviemeter.nl/images/covers/thumbs/87000/87923.jpg
            [average] => 0
            [votes_count] => 0
            [similarity] => 100.00
            [directors_text] => geregisseerd door Example Director
            [actors_text] => met Actor 1, Actor 2 en Actor 3
            [genres_text] => Drama / Komedie
            [duration] => 90
        )
    [2] => Array
        (
            [filmId] => 68593
            [url] => http://www.moviemeter.nl/film/68593
            [title] => Unstoppable
            [alternative_title] => 
            [year] => 2010
            [thumbnail] => http://www.moviemeter.nl/images/covers/thumbs/68000/68593.jpg
            [average] => 3.3
            [votes_count] => 191
            [similarity] => 100.00
            [directors_text] => geregisseerd door Tony Scott
            [actors_text] => met Denzel Washington, Chris Pine en Rosario Dawson
            [genres_text] => Actie / Thriller
            [duration] => 98
        )
    [3] => Array
        (
            [filmId] => 17931
            [url] => http://www.moviemeter.nl/film/17931
            [title] => Unstoppable
            [alternative_title] => Nine Lives
            [year] => 2004
            [thumbnail] => http://www.moviemeter.nl/images/covers/thumbs/17000/17931.jpg
            [average] => 2.64
            [votes_count] => 237
            [similarity] => 100.00
            [directors_text] => geregisseerd door David Carson
            [actors_text] => met Wesley Snipes, Jacqueline Obradors en Mark Sheppard
            [genres_text] => Actie / Thriller
            [duration] => 96
        )
)

解决方案

Try this:

function removeElementWithValue($array, $key, $value){
     foreach($array as $subKey => $subArray){
          if($subArray[$key] == $value){
               unset($array[$subKey]);
          }
     }
     return $array;
}

Then you would call it like this:

$array = removeElementWithValue($array, "year", 2011);

这篇关于基于价值的多维数组元素删除的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆