Удаление определенной части массива PHP

0

Мне нужно удалить определенный ключ моего массива, так как я создаю фильтр для своих данных.

Array(
   [0]=>Array
      (
        ['Column1'] => 'ABC'
        ['Column2'] => 'xxx'
      )
   [1]=>Array
      (
        ['Column1'] => 'XYZ'
        ['Column2'] => 'xxx'
      )
)

Я хочу удалить ключ (то есть номер 2), который имеет значение "XYZ". Как его удалить? Мне нужно удалить его, потому что я фильтрую массив, который был передан мне другим скриптом, и мне нужно удалить ключ. Я пробовал использовать для цикла, но я не знаю, как его удалить.

for($z = 0; $z < count($array);$z++)
{
   if($array[$z]['Column1'] == 'XYZ'){
          // how do I remove the record [1] and all of its contents?
  }
}
Теги:
arrays

2 ответа

3
Лучший ответ

Использовать unset()

for($z = 0; $z < count($array);$z++)
{
   if($array[$z]['Column1'] == 'XYZ'){
     unset($array[$z]);
  }
}

Вы также можете сделать:

foreach($array as &$v) {
  if($v['Column1'] == 'XYZ') {
    unset($v);
  }
}

После использования unset() в массиве и до тех пор, пока вам не нужно сохранять значения индекса, стоит сделать:

$array = array_values($array);

Чтобы сбросить индекс массива.

  • 2
    @marchemike для этого решения, после цикла хорошо использовать $ array = array_values ($ array); заново основать индексы массива, так как он может оставить пустые значения в индексах, где вы сбросили значение. Но это может быть вашим желаемым результатом, до вас
  • 1
    Хороший вопрос @ Stacker-flow - я обновил свой ответ.
Показать ещё 1 комментарий
0
foreach ($array as $k => $v)
{
    if ($v['Column1'] == 'XYZ') unset($array[$k]);
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню