2014-01-13 4 views
-2

Я работаю над индексирующим проектом. его все прекращается до тех пор, пока мне не придется удалять индексный файл. я хочу, чтобы веб-сайт был удален администратором, все его списки проводки индексов должны быть удалены. помогите мне, указав мне способ записи массива из массива размерности mutlt.Как отменить или удалить массив из массива многомерных измерений, когда вы знаете только ключ дочернего элемента, но не родительский

данный массив, подобный ниже, 3 - это идентификатор проиндексированного веб-сайта в базе данных. администратор удаляет этот веб-сайт. Я хочу также иметь возможность удалять ссылки для публикации из моего индекса.

Array 
(
[mr] => Array 
    (
     [3] => Array 
      (
       [frequency] => 3 
       [position] => Array 
        (
         [0] => 16 
         [1] => 94 
         [2] => 110 
        ) 

      ) 

    ) 

[smith] => Array 
    (
     [3] => Array 
      (
       [frequency] => 3 
       [position] => Array 
        (
         [0] => 17 
         [1] => 95 
         [2] => 111 
        ) 

      ) 

    ) 
) 

позволяет назвать этот массив $ index. Как кто-то может отключить или удалить все массивы с ключом из 3, что означает, что я останусь с таким массивом.

Array 
(
[mr] => Array 
(

) 

[smith] => Array 
(

) 
) 

ответ

0

Очень простой.

Петля через массив первого уровня, а затем цикл через каждый второй уровень. Если ключ второго уровня равен 3, установите значение в массиве первого уровня как пустой массив.

foreach($array as $key => $val) { 
    foreach($val as $key2 => $val2) { 
     if($key2 == 3) { unset($array[$key][$key2]); } 
    } 
} 

Отредактировано в ответ на нижеследующий комментарий.

+0

Что произойдет, если на 2-м уровне больше массивов? Вы все их отключите. Лучшее решение заменит '$ array [$ key] = array();' с 'unset ($ array [$ key] [$ key2]);'. –

+0

Это то, что запросил ОП. Так что не нужно понижать! – Ryan

+0

Рассматривая вопрос во второй раз, я предполагаю **, для каждого второго индекса будет существовать только один массив. Я изменил свой код. – Ryan