фильтровать массив json php по строке - PullRequest
1 голос
/ 22 января 2011

У меня есть массив JSON, который использует json_decode() для настройки данных.

Я ищу соответствующий элемент в массиве, и если он совпадает, мне нужно вернуть всю «строку» массива, а не только одно поле, как все фрагменты filter_array (), которые я нахожу.

Кто-нибудь может указать мне правильное направление?

Данные выглядят так до вызова json_decode():

[
    {
        "format": "default",
        "media_url": "http://cpe.delvenetworks.com/000337/011911_redzonefull.mp3",
        "title": "RZ - Jim Trotter",
        "thumb_url": "",
        "date_posted": "2011-01-19 14:58:45",
        "media_type": "audio"
    },
    {
        "format": "default",
        "media_url": "http://cpe.delvenetworks.com/000337/f10bestof2010offense.mp4",
        "title": "Best of O - 2010",
        "thumb_url": "http://img.delvenetworks.com/bV7.120x66.jpeg",
        "date_posted": "2011-01-18 16:01:45",
        "media_type": "video"
    },
    {
        "format": "default",
        "media_url": "http://cpe.delvenetworks.com/000337\f10bestof2010defense.mp4",
        "title": "Best od D - 2010",
        "thumb_url": "http://img.delvenetworks.com/UqK.120x66.jpeg",
        "date_posted": "2011-01-18 16:01:45",
        "media_type": "video"
    }

Мне нужно соответствовать media_type.

Ответы [ 3 ]

3 голосов
/ 22 января 2011

Как то так?

function filter($filter, $array){
    $filtered_array = array();
    for($i = 0; i < count(array); i++){
        if($array[i].media_type == $filter)
            $filtered_array[] = array[i]
    }
    return $filtered_array
}
0 голосов
/ 25 ноября 2013

PHP


media_type_array($json,$filter) // function name <br/>
{ 

$filtered_array=array();

foreach($json as $key=>$value)

{

foreach($value as $key1=>$value1)

  {

        if ($value1==$filter)
        {
        $filtered_array[]=$value;
        }
    }

}

return $filtered_array;

}
0 голосов
/ 18 октября 2011

Исправлено:

function filter($filter, $array){
    $filtered_array = $array();     
    for ($i = 0; $i < count($array); $i++){
        if($array[$i].media_type == $filter)
            $filtered_array[] = $array[$i];
    }
    return $filtered_array;
}
...