Перейти к содержимому

Как удалить элемент из массива php

  • автор:

Удалить элемент ассоциативного массива по ключу? [дубликат]

Есть большой двух уровненный массив, первый ключ число, второй строка, кирилица, и есть файл со списком ключей которые нужно удалить. Как можно удалить нужные ключи из этого массива? как пробовал делать:

$file3=file("ignore.txt"); print_r($sparam2[0]); print_r($sparam2[2]); for ($i = 0; $i "; unset($sparam2[$i][$keys4]); > > 

прикол в том, что даже строка echo $sparam2[$i][$keys4].»
«; ничего не выводит, echo $keys4 выводит нужный ключ. вот результат вывода элементов (пример массива) print_r($sparam2[0]); print_r($sparam2[2]);

Array ( [Название] => Название [Код Русского Света] => Код Русского Света [Артикул] => Артикул [Бренд] => Бренд [Цена] => Цена [Длина] => Длина [Источник света] => Источник света [Исполнение] => Исполнение [Аккумуляторный] => Аккумуляторный [Материал] => Материал [Тип батареи] => Тип батареи [Водонепроницаемый] => Водонепроницаемый [Цвет корпуса] => Цвет корпуса [Наличие на складе] => Наличие на складе [Ширина] => Ширина [Высота] => Высота [Тип светильника] => Тип светильника [Способ монтажа] => Способ монтажа [Тип цоколя] => Тип цоколя [Мощность лампы] => Мощность лампы [Класс защиты от поражения электрическим током] => Класс защиты от поражения электрическим током [Материал корпуса] => Материал корпуса ) Array ( [Название] => Фонарь S-LD043-B Silver Uniel UL-00000191 [Код Русского Света] => 413391 [Артикул] => UL-00000191 [Бренд] => Uniel [Цена] => 116.82 [Длина] => 88 мм [Источник света] => Светодиод [Исполнение] => Карманный фонарь цилиндрической формы [Аккумуляторный] => Нет [Материал] => Алюминий [Тип батареи] => Мизинчиковый [Водонепроницаемый] => Да [Цвет корпуса] => Серебристый [Наличие на складе] => Штука [Ширина] => [Высота] => [Тип светильника] => [Способ монтажа] => [Тип цоколя] => [Мощность лампы] => [Класс защиты от поражения электрическим током] => [Материал корпуса] => ) 

Для примера в файле игнора два ключа Материал Тип батареи Их нужно исключить из этого массива.

Как удалить элемент массива в PHP?

Одним из мощнейших инструментов PHP-разработчика являются массивы. Если вы работали с массивами в других языках программирования (Delphi, Fortrain, C++), то помните, что везде массив надо объявлять, указывая размерность и тип элементов. В PHP всё обстоит иначе.

Дело в том, что в PHP массив не является линейным объектом. Это, по сути, хеш-массив, представляющий собой набор пар — ключей с их значениями.

Теперь давайте посмотрим, как удалять элементы из хеш-массива в PHP. В вышеупомянутых языках программирования для таких действий придётся создавать специальный объект, односвязный либо 2-связный список, бережно выделять и освобождать память, наблюдать за восстановлением связей в списке. Что касается PHP, то тут весь необходимый «менеджмент» спрятан, но всегда готов к применению.

1. Удаляем элемент массива в PHP

Чтобы удалить элемент в PHP, достаточно всего лишь знать его ключ — в таком случае удаление будет сведено к вызову функции unset() :

 
php $a = array('a','b','c'); unset($a[1]); //удаляем элемент с ключом «1» print_r($a); //на экране отобразится: Array ( [0] => a [2] => c ) ?> 

2. Как удалить 1-й элемент массива?

Если не знаем ключ, но знаем, что удалять надо 1-й элемент массива, подойдёт функция array_shift() . Она извлечёт значение 1-го элемента, удалит его из массива и выполнит перенумерацию числовых ключей, начав с нуля.

 
php $stack = array(3 => 'a', 5 => 'b', 'third element' => 'c'); $elm = array_shift($stack); print_r($stack); //на экране отобразится: Array ( [0] => b [third element] => c ) ?> 

В нашем случае 1-й элемент удаляется, а элемент 5 => ‘b’, попадает под перенумерацию. Что касается элементов со строковыми ключами, то их перенумерация не затронет.

3. Как удалить последний элемент массива?

Схожим образом выполняют удаление последнего элемента массива. Для этого в PHP есть функция array_pop() .

 
php $stack = array(3 => 'a', 5 => 'b', 'third element' => 'c'); $elm = array_pop($stack); print_r($stack); //на экране отобразится: Array ( [3] => a [5] => b ) ?> 

После удаления последнего элемента массива в PHP перенумерация оставшихся элементов не выполняется.

4. Как удалить пустые элементы из массива?

Сначала вспомним, что называют пустым элементом. Лучше всего определить «пустое значение» помогает результат работы функции empty() . Функция возвратит true для пустого элемента, причем не только скалярного. Убедимся в этом на примере ниже:

 
php $stack = array(3 => 'a', 5 => 'b', '3rd' => 'c', array(), null, false, 0, '', '0', '00'); foreach ($stack as $k => $v) if (empty($v)) unset($stack[$k]); print_r($stack); //на экране отобразится : Array ( [3] => a [5] => b [3rd] => c [12] => 00 ) ?> 

Итак, мы в цикле проверим каждый элемент массива, используя функцию empty() и удалим пустые элементы. Здесь важно понять, что строковый скаляр ‘0’ — тоже пустой элемент. А вот ’00’ пустым не является.

Если считаете, что поэлементная проверка массива — неоптимальный вариант, воспользуйтесь функцией сравнения массивов в PHP — array_diff() , перечислив с её помощью все элементы, которые считаем «нулевыми»:

 
php $stack = array(3 => 'a', 5 => 'b', '3rd' => 'c', array(), null, false, 0, '', '0', '00', ' '); $stack = array_diff($stack, array(array(), null, false, 0, '', '0', '00', ' ')); print_r($stack); //на экране отобразится: Array ( [3] => a [5] => b [3rd] => c ) ?> 

Очевидно, что данный способ более гибок.

5. Удаляем повторяющиеся элементы массива в PHP

Порой возникает необходимость удалить повторяющиеся элементы массива в PHP. Для решения этой задачи существует специальная функция под названием array_unique() :

 
php $stack = array('a', 'b', 'b', 'c', 'c', 0, '0'); $stack = array_unique($stack); print_r($stack); //на экране отобразится: Array ( [0] => a [1] => b [3] => c [5] => 0 ) ?> 

Из кода видно, что функция удалила из PHP-массива повторяющиеся элементы. При этом функция имеет ещё один параметр, указывающий, как сравнивать элементы.

Возможные типы сравнения: • SORT_REGULAR — сравнение без преобразования типа элементов; • SORT_STRING — сравнение как строки; • SORT_NUMERIC — сравнение как чисел (пытаемся преобразовать в число); • SORT_LOCALE_STRING — сравнение как строки, но с учётом выбранного набора символов.

По умолчанию применяется SORT_STRING. Выбирая типы сравнения, помните, что это важно. Давайте изменим тип в прошлом примере на SORT_NUMERIC:

 
php $stack = array('a', 'b', 'b', 'c', 'c', 0, '0'); $stack = array_unique($stack, SORT_NUMERIC); print_r($stack); //на экране отобразится: Array ( [0] => a ) ?> 

Во время сравнения все элементы массива были преобразованы к численному типу скаляра. В нашем случае это неизменно давало значение ноль, в результате чего у нас остался лишь первый элемент.

Хотите знать о PHP больше? Записывайтесь на курс «Backend-разработчик на PHP»!

Как удалить элемент многомерного массива php

В PHP для удаления элемента из массива используется функция unset . В функцию передаётся элемент к которому обращаются по ключам, например $data['foo']['bar'] . Элемент удаляется из массива, но ключи не сбрасываются, т.е. мы можем получить неупорядоченный массив, если это не ассоциативный массив. Чтобы восстановить ключи необходимо перезаписать вложенный массив с помощью функции array_values . Если ключи будут не упорядоченны, то такой массив, например при преобразовании в JSON будет выглядеть как объект, а не массив json.

 $data = [ [1, 2, 3], [4, 5, 6], ]; unset($data[0][1]); var_dump($data); //=> array(2) //=> [0] => //=> array(2) //=> [0] => //=> int(1) //=> [2] => //=> int(3) //=> > //=> [1] => //=> array(3) //=> [0] => //=> int(4) //=> [1] => //=> int(5) //=> [2] => //=> int(6) //=> > //=> > 

Удаление элементов массива — PHP: Массивы

Из массива всегда можно удалить какой-нибудь элемент, но лучше так никогда не делать. Особенно плохо удалять и добавлять элементы во время обхода.Поведение в этом случае может оказаться совершенно непредсказуемым. Что будет, если мы модифицируем массив в том месте, до которого не дошел цикл? Нужно ли итерировать по тому элементу, который был удален или добавлен?

В этом уроке мы поговорим на эту тему. Вы узнаете больше о правильном выходе из этой ситуации — о создании нового массива. Так ваш код станет проще и для понимания и для отладки.

В стандартную библиотеку большинства языков входит функция compact , которая удаляет все значения null из массива. Вот ее реализация:

 function mycompact($coll)  $result = []; foreach ($coll as $item)  // Здесь используется is_null — функция-предикат стандартной библиотеки if (!is_null($item))  $result[] = $item; > > return $result; > print_r(mycompact([0, 1, false, null, true, 'wow', null])); // => Array // => ( // => [0] => 0 // => [1] => 1 // => [2] => // => [3] => 1 // => [4] => wow // => ) 

Обратите внимание, что в этом коде не происходит никаких удалений и модификаций исходного массива. Вместо этого мы создаем новый массив, который наполняется только подходящими под условие значениями. Именно так нужно воспринимать фразу «удалить элемент из массива».

Открыть доступ

Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно

  • 130 курсов, 2000+ часов теории
  • 1000 практических заданий в браузере
  • 360 000 студентов

Наши выпускники работают в компаниях:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

https://kodirovanie.vyvod-iz-zapoya-na-domu-moskva-snp.ru/