2014-01-27 4 views
0

Моего массива выглядит следующим образом:PHP - Как быть сброшен элементом массива в этом состоянии

Array ( 
    [0] => Array ( 
     [value] => Array (
      [source] => vimeo 
      [url] => https://vimeo.com/000000 
     ) 
     [type] => videos 
    ) 
    [2] => Array ( 
     [value] => 62 
     [type] => images 
    ) 
) 

Я хочу, чтобы сбросить массив идентификатора с типа => изображениями.

Я попытался это:

$key = array_search('images',$slides); 
unset($slides[$key]); 

и удаляет только первый элемент в массиве !!!

Update:

В конце концов, я сделал это так:

foreach ($slides as $slide => $value) { 
    if ($display_mode == 'images' && $value['type'] == 'videos') { 
     unset($slides[$slide]); 
    } elseif ($display_mode == 'videos' && $value['type'] == 'images') { 
     unset($slides[$slide]); 
    } 
} 

Спасибо.

ответ

2
foreach ($slides as $key => $slide) { 
    if (in_array('images', $slide)) unset($slides[$key]); 
} 
+0

eBrian - Вы должны были бы использовать ссылку на $ горки для того, чтобы работать. В противном случае изменения будут отменены после каждой итерации. В противном случае идеально подходит foreach =) –

+2

@KevinNielsen, не верно. Обратите внимание, что я сразу же отключается в массиве и не пытаюсь отключить $ slide. В конечном итоге это не отменяет ($ slides [2]). – brian

+0

спасибо, понял. – fazary

2

array_search возвращает ложь, если $needle не найден. false отличает от 0 при использовании в качестве целого числа. Вы могли бы хотеть рассмотреть array_filter для случая использования:

$array = array(...); 

$array = array_filter($array, function($item) { return in_array('images', $item); });