2011-01-21 9 views
1

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

Я ищу подходящий элемент в массиве, и если он соответствует, мне нужно вернуть всю «строку» массива, а не только одно поле, подобное всем фрагментам 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

Что-то вроде этого?

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

Дa, благодаря captn! –

0

Исправлено:

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

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

Правильный ответ выше

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