Я бы не сказал, что ответ Конрада является самым простым для поставленной задачи. С unset()итерациями по массиву уже не будет удалено значение. OTOH, это правда, что ответ Стевана достаточно и, на самом деле, был ответ, который я искал - но не OP :)
brandizzi
32
@danip Легкость поиска в руководстве не исключает вопроса о StackOverflow. Если бы вопрос был дублирующим вопросом StackOverflow, он мог бы не принадлежать здесь. StackOverflow - это хорошее место, где можно найти ответы в качестве альтернативы, прежде чем искать в руководстве.
Обратите внимание, что при использовании unset() ключей массива не будет меняться / переиндексироваться. Если вы хотите переиндексировать ключи, которые вы можете использовать, \array_values()после unset()этого все ключи будут преобразованы в цифровые ключи, начиная с 0.
Код
<?php
$array =[0=>"a",1=>"b",2=>"c"];
unset($array[1]);//↑ Key which you want to delete?>
Если вы используете \array_splice() ключи, они будут автоматически переиндексированы, но ассоциативные ключи не изменятся, в отличие от \array_values()которых все ключи будут преобразованы в цифровые.
Также \array_splice() необходимо смещение, а не ключ! как второй параметр.
Код
<?php
$array =[0=>"a",1=>"b",2=>"c"];
\array_splice($array,1,1);//↑ Offset which you want to delete?>
Вывод
[[0]=> a
[1]=> c
]
array_splice() такой же как unset() взять массив по ссылке, а это значит, что вы не хотите присваивать возвращаемые значения этих функций обратно в массив.
Удалить несколько элементов массива
Если вы хотите удалить несколько элементов массива и не хотите вызывать unset()или \array_splice()несколько раз, вы можете использовать функции \array_diff()или в \array_diff_key()зависимости от того, знаете ли вы значения или ключи элементов, которые вы хотите удалить.
Если вам известны значения элементов массива, которые вы хотите удалить, то вы можете использовать \array_diff(). Как и раньше, unset()он не будет изменять / переиндексировать ключи массива.
Код
<?php
$array =[0=>"a",1=>"b",2=>"c"];
$array = \array_diff($array,["a","c"]);//└────────┘→ Array values which you want to delete?>
Если вы знаете ключи элементов, которые вы хотите удалить, то вы хотите использовать \array_diff_key(). Здесь вы должны убедиться, что вы передаете ключи как ключи во втором параметре, а не как значения. В противном случае вы должны перевернуть массив с\array_flip() . А также здесь ключи не будут меняться / переиндексировать.
Код
<?php
$array =[0=>"a",1=>"b",2=>"c"];
$array = \array_diff_key($array,[0=>"xy","2"=>"xy"]);//↑ ↑ Array keys which you want to delete?>
Вывод
[[1]=> b
]
Также, если вы хотите использовать unset()или \array_splice()удалить несколько элементов с одинаковым значением, вы можете использовать, \array_keys()чтобы получить все ключи для определенного значения, а затем удалить все элементы.
@AlexandruRada Нет, вы сказали «не используйте это» - и это просто чепуха. Вы можете смело использовать этот метод, когда рассматриваете массив как словарь. Только если вы ожидаете последовательных числовых индексов, вам нужно использовать что-то еще.
Конрад Рудольф
2
@ Александр Используйте array_splice, как описано в других ответах.
Конрад Рудольф
1
@AlexandruRada Нет никакого способа, которым ты можешь иметь, array (3) { [0]=>int(0) ...когда ты unset($x[2])из $x = array(1, 2, 3, 4);Результата должен быть var_dump($x); // array(3) { [0]=> int(1) [1]=> int(2) [3]=> int(4) }(это была, вероятно, опечатка)
inemanja
5
unsetможет иметь несколько аргументов: void unset ( mixed $var [, mixed $... ] ).
Константин Ван
3
array_filter также является жизнеспособным методом. Особенно хорошо, если вы не хотите изменять массив, но он также не переиндексирует, что может быть проблемой с json_encode. php.net/manual/en/function.json-encode.php#94157
dotnetCarpenter
1359
Следует отметить, что unset()индексы останутся нетронутыми, чего и следовало ожидать при использовании строковых индексов (массив как хеш-таблица), но это может быть довольно удивительно при работе с целочисленными индексированными массивами:
Так что array_splice()можно использовать, если вы хотите нормализовать ваши целочисленные ключи. Другой вариант использует array_values()после unset():
Стоит отметить, что когда вы используете array_splice (), вам нужно знать OFFSET, а не ключ, а смещение (!) Любого элемента, который вы хотите удалить
Том
18
@Tom: Для обычного массива (который постоянно индексируется целым числом) смещение является индексом. Вот где array_spliceможет иметь смысл (среди других).
Стефан Гериг
5
Да, конечно, но просто кое-что нужно помнить, если вы вмешиваетесь в массив перед использованием соединения
Том
4
С помощью простого теста удаления тонны элементов из гигантского массива, array_splice выглядит намного быстрее и требует меньше памяти. Это соответствует тому, что я ожидал: array_values (), кажется, делает копию массива, в то время как array_splice работает на месте.
Даг Кавендек
4
Аргумент array_values полезен, когда вы удаляете элементы в цикле и хотите, чтобы индексы были согласованными, но затем хотели сжать их после цикла.
Рорик
370
// Our initial array
$arr = array("blue","green","red","yellow","green","orange","yellow","indigo","red");
print_r($arr);// Remove the elements who's values are yellow or red
$arr = array_diff($arr, array("yellow","red"));
print_r($arr);
Это вывод из кода выше:
Array([0]=> blue
[1]=> green
[2]=> red
[3]=> yellow
[4]=> green
[5]=> orange
[6]=> yellow
[7]=> indigo
[8]=> red
)Array([0]=> blue
[1]=> green
[4]=> green
[5]=> orange
[7]=> indigo
)
Теперь array_values () будет переиндексировать числовой массив, но он удалит все ключевые строки из массива и заменит их числами. Если вам нужно сохранить имена ключей (строки) или переиндексировать массив, если все ключи числовые, используйте array_merge ():
$ get_merged_values = array_merge ($ data ['res'], $ data ['check_res']); когда я печатаю этот print_r ($ get_merged_values); это отображает следующее. Array ([0] => Array ([menu_code] => 2 [menu_name] => Plant [menu_order_no] => 1) [1] => Array ([menu_code] => 3 [menu_name] => Линия [menu_order_no] => 2)) Но мне нужно получить значения menu_code и menu_name, используя $ get_merged_values ['menu_code'] и $ get_merged_values ['menu_name'] соответственно, вместо использования $ get_merged_values [0] [menu_code], $ get_merged_values [0 ] [menu_name]. помогите пожалуйста как это сделать?
Было бы хорошо уточнить, что этот ответ предназначен для удаления элемента, когда вы знаете значение, а не ключ. Обратите внимание, что он удаляет только первый экземпляр значения; найти все ключи для значения, используйте array_keys
Если у вас есть числовой индексированный массив, в котором все значения уникальны (или они не уникальны, но вы хотите удалить все экземпляры определенного значения), вы можете просто использовать array_diff (), чтобы удалить соответствующий элемент, например так:
В этом примере элемент со значением 'Charles' удаляется, что можно проверить с помощью вызовов sizeof (), которые сообщают о размере 4 для исходного массива и 3 после удаления.
$a = array("A"=>1, "B"=>2, "C"=>"a");print_r($a);unset($a["B"]);print_r($a); дает (в формате): Array ( [A] => 1 [B] => 2 [C] => a ), Array ( [A] => 1 [C] => a )
DefenestrationDay
Кажется, вы не можете сбросить элементы массива, проиндексированные строкой (генерирует «Неустранимая ошибка: невозможно сбросить смещения строки»). Я не думаю, что это всегда имело место, но, конечно,
начиная
6
@carpii PHP может удалять элементы из ассоциативного массива. Неустранимая ошибка возникает, когда вы пытаетесь использовать unset ($ var ['key']) в строке вместо массива. Например: $ array = array ('test' => 'value', 'another' => ' ценность', ); снята с охраны ($ массив [ 'тест']); // Удаляет элемент «test» из массива, как и ожидалось $ array = 'test'; снята с охраны ($ массив [ 'тест']); // Выдает «Фатальная ошибка: невозможно отменить смещение строки», как ожидалось
Удалить элемент из конца массива - вернуть значение удаленного элемента
mixed array_pop(array &$array)
$stack = array("orange","banana","apple","raspberry");
$last_fruit = array_pop($stack);
print_r($stack);
print_r('Last Fruit:'.$last_fruit);// Last element of the array
Выход будет
Array([0]=> orange
[1]=> banana
[2]=> apple
)LastFruit: raspberry
Удалить первый элемент (красный) из массива , - вернуть значение удаленного элемента
array_shiftИндекс повторно ключевые элементы , если это целое число, так что это плохо, так что вы можете использовать это: stackoverflow.com/a/52826684/1407491
Обратите внимание, что array_shiftможно удалить только первый элемент в массиве. аналогично используйте array_popдля удаления последнего элемента в массиве.
Джасир
1
Ответ применим только к первому элементу массива и не отвечает на общий вопрос.
sweisgerber.dev
@sebweisgerber Вы правы, но я не думаю, что это неправильно, и нужно понизить этот ответ. Вопрос в том, чтобы удалить элемент без упоминания какой-либо позиции.
Саурабх Чандра Патель
27
Чтобы избежать поиска, можно поиграться с array_diff:
Если вам нужно удалить несколько значений в массиве, а записи в этом массиве являются объектами или структурированными данными, [array_filter][1] вам лучше всего. Те записи, которые возвращают true из функции обратного вызова, будут сохранены.
Поведение unset()внутри функции может варьироваться в зависимости от типа переменной, которую вы пытаетесь уничтожить.
Если глобальная переменная находится unset()внутри функции, уничтожается только локальная переменная. Переменная в вызывающей среде сохранит то же значение, что и раньше unset().
<?php
function destroy_foo(){global $foo;
unset($foo);}
$foo ='bar';
destroy_foo();
echo $foo;?>
Ответ приведенного выше кода будет бар .
Для unset()глобальной переменной внутри функции:
<?php
function foo(){
unset($GLOBALS['bar']);}
$bar ="something";
foo();?>
$arr =['a','b','c'];
$index = array_search('a', $arr);// search the value to find indexif($index !==false){
unset($arr[$index]);// $arr = ['b', 'c']}
ifУсловие является необходимым , потому что если indexне будет найден, unset()будет автоматически удалить первый элемент массива , который не то , что мы хотим
Чтобы удалить несколько смежных элементов, используйте array_splice () :
array_splice($array, $offset, $length);
Дальнейшее объяснение:
Использование этих функций удаляет все ссылки на эти элементы из PHP. Если вы хотите сохранить ключ в массиве, но с пустым значением, присвойте элементу пустую строку:
$array[3]= $array['foo']='';
Помимо синтаксиса, есть логическая разница между использованием unset () и назначением элемента. Первый говорит, This doesn't exist anymore,а второй говоритThis still exists, but its value is the empty string.
Если вы имеете дело с числами, лучше выбрать 0. Таким образом, если компания остановит производство звездочки модели XL1000, она обновит свой инвентарь:
unset($products['XL1000']);
Однако, если на нем временно закончились звездочки XL1000, но в конце этой недели планировалось получить новый груз с завода, это лучше:
$products['XL1000']=0;
Если вы отменили () элемент, PHP настроит массив так, чтобы цикл все еще работал правильно. Он не сжимает массив, чтобы заполнить недостающие отверстия. Это то, что мы имеем в виду, когда говорим, что все массивы ассоциативны, даже если они кажутся числовыми. Вот пример:
// Create a "numeric" array
$animals = array('ant','bee','cat','dog','elk','fox');print $animals[1];// Prints 'bee'print $animals[2];// Prints 'cat'
count($animals);// Returns 6// unset()
unset($animals[1]);// Removes element $animals[1] = 'bee'print $animals[1];// Prints '' and throws an E_NOTICE errorprint $animals[2];// Still prints 'cat'
count($animals);// Returns 5, even though $array[5] is 'fox'// Add a new element
$animals[]='gnu';// Add a new element (not Unix)print $animals[1];// Prints '', still emptyprint $animals[6];// Prints 'gnu', this is where 'gnu' ended up
count($animals);// Returns 6// Assign ''
$animals[2]='';// Zero out valueprint $animals[2];// Prints ''
count($animals);// Returns 6, count does not decrease
Чтобы сжать массив в плотно заполненный числовой массив, используйте array_values () :
$animals = array_values($animals);
В качестве альтернативы, array_splice () автоматически переиндексирует массивы, чтобы не оставлять дыр:
// Create a "numeric" array
$animals = array('ant','bee','cat','dog','elk','fox');
array_splice($animals,2,2);
print_r($animals);Array([0]=> ant
[1]=> bee
[2]=> elk
[3]=> fox
)
Это полезно, если вы используете массив в качестве очереди и хотите удалить элементы из очереди, но при этом разрешить произвольный доступ. Чтобы безопасно удалить первый или последний элемент из массива, используйте array_shift () и array_pop () соответственно.
Я просто хотел бы сказать, что у меня был конкретный объект, который имел переменные атрибуты (это было в основном отображение таблицы, и я менял столбцы в таблице, поэтому атрибуты в объекте, отражающие таблицу, также будут различаться):
class obj {protected $fields = array('field1','field2');protected $field1 = array();protected $field2 = array();protected loadfields(){}// This will load the $field1 and $field2 with rows of data for the column they describeprotectedfunction clearFields($num){foreach($fields as $field){
unset($this->$field[$num]);// This did not work the line below worked
unset($this->{$field}[$num]);// You have to resolve $field first using {}}}}
Целью $fieldsбыло просто, поэтому мне не нужно искать код в любом месте, когда они меняются, я просто смотрю на начало класса и изменяю список атрибутов и содержимое массива $ fields, чтобы отразить новое атрибутов.
<?php
$array = array("your array");
$array = array_diff($array,["element you want to delete"]);?>
Создайте свой массив в переменной, $arrayа затем, где я поместил «элемент, который вы хотите удалить», вы поместите что-то вроде: «а». И если вы хотите удалить несколько элементов, то: «а», «б».
unset () несколько фрагментированных элементов из массива
Хотя unset()здесь уже упоминалось несколько раз, еще не упомянуто, что он unset()принимает несколько переменных, что облегчает удаление нескольких несмежных элементов из массива за одну операцию:
// Delete multiple, noncontiguous elements from an array
$array =['foo','bar','baz','quz'];
unset( $array[2], $array[3]);
print_r($array);// Output: [ 'foo', 'bar' ]
unset () динамически
unset () не принимает массив ключей для удаления, поэтому приведенный ниже код завершится ошибкой (хотя было бы немного проще использовать unset () динамически).
Существует также еще одна практика, которая еще не упомянута. Иногда самый простой способ избавиться от определенных ключей массива - просто скопировать $ array1 в $ array2.
$array1 = range(1,10);foreach($array1 as $v){// Remove all even integers from the arrayif( $v %2){
$array2[]= $v;}}
print_r($array2);// Output: [ 1, 3, 5, 7, 9 ];
Очевидно, такая же практика применима к текстовым строкам:
$array1 =['foo','_bar','baz'];foreach($array1 as $v){// Remove all strings beginning with underscoreif( strpos($v,'_')===false){
$array2[]= $v;}}
print_r($array2);// Output: [ 'foo', 'baz' ]
Два способа удаления первого элемента массива с сохранением порядка индекса, а также, если вы не знаете имя ключа первого элемента.
Решение № 1
// 1 is the index of the first object to get// NULL to get everything until the end// true to preserve keys
$array = array_slice($array,1,null,true);
Решение № 2
// Rewinds the array's internal pointer to the first element// and returns the value of the first array element.
$value = reset($array);// Returns the index element of the current array position
$key = key($array);
unset($array[$key]);
PHP5: просто работает array_pop($arr)удаляет последнюю запись. Нет `=` необходимо.
Крис К
5
<?php
// If you want to remove a particular array element use this method
$my_array = array("key1"=>"value 1","key2"=>"value 2","key3"=>"value 3");
print_r($my_array);if(array_key_exists("key1", $my_array)){
unset($my_array['key1']);
print_r($my_array);}else{
echo "Key does not exist";}?><?php
//To remove first array element
$my_array = array("key1"=>"value 1","key2"=>"value 2","key3"=>"value 3");
print_r($my_array);
$new_array = array_slice($my_array,1);
print_r($new_array);?><?php
echo "<br/> ";// To remove first array element to length// starts from first and remove two element
$my_array = array("key1"=>"value 1","key2"=>"value 2","key3"=>"value 3");
print_r($my_array);
$new_array = array_slice($my_array,1,2);
print_r($new_array);?>
unset()
итерациями по массиву уже не будет удалено значение. OTOH, это правда, что ответ Стевана достаточно и, на самом деле, был ответ, который я искал - но не OP :)Ответы:
Существуют разные способы удаления элемента массива, причем некоторые из них более полезны для некоторых конкретных задач, чем другие.
Удалить один элемент массива
Если вы хотите удалить только один элемент массива, который вы можете использовать
unset()
или альтернативно\array_splice()
.Также, если у вас есть значение и вы не знаете ключ для удаления элемента, вы можете использовать его
\array_search()
для получения ключа.unset()
Обратите внимание, что при использовании
unset()
ключей массива не будет меняться / переиндексироваться. Если вы хотите переиндексировать ключи, которые вы можете использовать,\array_values()
послеunset()
этого все ключи будут преобразованы в цифровые ключи, начиная с 0.Код
Вывод
\array_splice()
методЕсли вы используете
\array_splice()
ключи, они будут автоматически переиндексированы, но ассоциативные ключи не изменятся, в отличие от\array_values()
которых все ключи будут преобразованы в цифровые.Также
\array_splice()
необходимо смещение, а не ключ! как второй параметр.Код
Вывод
array_splice()
такой же какunset()
взять массив по ссылке, а это значит, что вы не хотите присваивать возвращаемые значения этих функций обратно в массив.Удалить несколько элементов массива
Если вы хотите удалить несколько элементов массива и не хотите вызывать
unset()
или\array_splice()
несколько раз, вы можете использовать функции\array_diff()
или в\array_diff_key()
зависимости от того, знаете ли вы значения или ключи элементов, которые вы хотите удалить.\array_diff()
методЕсли вам известны значения элементов массива, которые вы хотите удалить, то вы можете использовать
\array_diff()
. Как и раньше,unset()
он не будет изменять / переиндексировать ключи массива.Код
Вывод
\array_diff_key()
методЕсли вы знаете ключи элементов, которые вы хотите удалить, то вы хотите использовать
\array_diff_key()
. Здесь вы должны убедиться, что вы передаете ключи как ключи во втором параметре, а не как значения. В противном случае вы должны перевернуть массив с\array_flip()
. А также здесь ключи не будут меняться / переиндексировать.Код
Вывод
Также, если вы хотите использовать
unset()
или\array_splice()
удалить несколько элементов с одинаковым значением, вы можете использовать,\array_keys()
чтобы получить все ключи для определенного значения, а затем удалить все элементы.источник
array_splice
, как описано в других ответах.array (3) { [0]=>int(0) ...
когда тыunset($x[2])
из$x = array(1, 2, 3, 4);
Результата должен бытьvar_dump($x); // array(3) { [0]=> int(1) [1]=> int(2) [3]=> int(4) }
(это была, вероятно, опечатка)unset
может иметь несколько аргументов:void unset ( mixed $var [, mixed $... ] )
.Следует отметить, что
unset()
индексы останутся нетронутыми, чего и следовало ожидать при использовании строковых индексов (массив как хеш-таблица), но это может быть довольно удивительно при работе с целочисленными индексированными массивами:Так что
array_splice()
можно использовать, если вы хотите нормализовать ваши целочисленные ключи. Другой вариант используетarray_values()
послеunset()
:источник
array_splice
может иметь смысл (среди других).Это вывод из кода выше:
Теперь array_values () будет переиндексировать числовой массив, но он удалит все ключевые строки из массива и заменит их числами. Если вам нужно сохранить имена ключей (строки) или переиндексировать массив, если все ключи числовые, используйте array_merge ():
Выходы
источник
источник
источник
Если у вас есть числовой индексированный массив, в котором все значения уникальны (или они не уникальны, но вы хотите удалить все экземпляры определенного значения), вы можете просто использовать array_diff (), чтобы удалить соответствующий элемент, например так:
Например:
Это отображает следующее:
В этом примере элемент со значением 'Charles' удаляется, что можно проверить с помощью вызовов sizeof (), которые сообщают о размере 4 для исходного массива и 3 после удаления.
источник
Также для именованного элемента:
источник
$a = array("A"=>1, "B"=>2, "C"=>"a");
print_r($a);
unset($a["B"]);
print_r($a);
дает (в формате):Array ( [A] => 1 [B] => 2 [C] => a ), Array ( [A] => 1 [C] => a )
Уничтожить один элемент массива
unset()
Выход будет:
Если вам нужно переиндексировать массив:
Тогда вывод будет:
Удалить элемент из конца массива - вернуть значение удаленного элемента
mixed array_pop(array &$array)
Выход будет
Удалить первый элемент (красный) из массива , - вернуть значение удаленного элемента
mixed array_shift ( array &$array )
Выход будет:
источник
array_shift
Индекс повторно ключевые элементы , если это целое число, так что это плохо, так что вы можете использовать это: stackoverflow.com/a/52826684/1407491Вывод:
источник
array_shift
можно удалить только первый элемент в массиве. аналогично используйтеarray_pop
для удаления последнего элемента в массиве.Чтобы избежать поиска, можно поиграться с
array_diff
:В этом случае не нужно искать / использовать ключ.
источник
Если вам нужно удалить несколько значений в массиве, а записи в этом массиве являются объектами или структурированными данными,
[array_filter][1]
вам лучше всего. Те записи, которые возвращают true из функции обратного вызова, будут сохранены.источник
Ассоциативные массивы
Для ассоциативных массивов используйте
unset
:Числовые массивы
Для числовых массивов используйте
array_splice
:Запись
Использование
unset
числовых массивов не приведет к ошибке, но испортит ваши индексы:источник
Если вам нужно удалить несколько элементов из ассоциативного массива, вы можете использовать array_diff_key () (здесь используется с array_flip () ):
Вывод:
источник
unset()
уничтожает указанные переменные.Поведение
unset()
внутри функции может варьироваться в зависимости от типа переменной, которую вы пытаетесь уничтожить.Если глобальная переменная находится
unset()
внутри функции, уничтожается только локальная переменная. Переменная в вызывающей среде сохранит то же значение, что и раньшеunset()
.Ответ приведенного выше кода будет бар .
Для
unset()
глобальной переменной внутри функции:источник
источник
Если индекс указан:
Если индекс НЕ указан:
if
Условие является необходимым , потому что еслиindex
не будет найден,unset()
будет автоматически удалить первый элемент массива , который не то , что мы хотимисточник
Решения:
Дальнейшее объяснение:
Использование этих функций удаляет все ссылки на эти элементы из PHP. Если вы хотите сохранить ключ в массиве, но с пустым значением, присвойте элементу пустую строку:
Помимо синтаксиса, есть логическая разница между использованием unset () и назначением элемента. Первый говорит,
This doesn't exist anymore,
а второй говоритThis still exists, but its value is the empty string.
Если вы имеете дело с числами, лучше выбрать 0. Таким образом, если компания остановит производство звездочки модели XL1000, она обновит свой инвентарь:
Однако, если на нем временно закончились звездочки XL1000, но в конце этой недели планировалось получить новый груз с завода, это лучше:
Если вы отменили () элемент, PHP настроит массив так, чтобы цикл все еще работал правильно. Он не сжимает массив, чтобы заполнить недостающие отверстия. Это то, что мы имеем в виду, когда говорим, что все массивы ассоциативны, даже если они кажутся числовыми. Вот пример:
Чтобы сжать массив в плотно заполненный числовой массив, используйте array_values () :
В качестве альтернативы, array_splice () автоматически переиндексирует массивы, чтобы не оставлять дыр:
Это полезно, если вы используете массив в качестве очереди и хотите удалить элементы из очереди, но при этом разрешить произвольный доступ. Чтобы безопасно удалить первый или последний элемент из массива, используйте array_shift () и array_pop () соответственно.
источник
Предположим, у вас есть следующий массив:
Чтобы удалить
storage
, сделайте:И вы получите:
источник
array_filter
используется?Я просто хотел бы сказать, что у меня был конкретный объект, который имел переменные атрибуты (это было в основном отображение таблицы, и я менял столбцы в таблице, поэтому атрибуты в объекте, отражающие таблицу, также будут различаться):
Целью
$fields
было просто, поэтому мне не нужно искать код в любом месте, когда они меняются, я просто смотрю на начало класса и изменяю список атрибутов и содержимое массива $ fields, чтобы отразить новое атрибутов.источник
Следуйте функциям по умолчанию:
я)
II)
III)
IV)
источник
Создайте свой массив в переменной,
$array
а затем, где я поместил «элемент, который вы хотите удалить», вы поместите что-то вроде: «а». И если вы хотите удалить несколько элементов, то: «а», «б».источник
Используйте array_search, чтобы получить ключ и удалить его с unset, если он найден:
источник
unset () несколько фрагментированных элементов из массива
Хотя
unset()
здесь уже упоминалось несколько раз, еще не упомянуто, что онunset()
принимает несколько переменных, что облегчает удаление нескольких несмежных элементов из массива за одну операцию:unset () динамически
unset () не принимает массив ключей для удаления, поэтому приведенный ниже код завершится ошибкой (хотя было бы немного проще использовать unset () динамически).
Вместо этого unset () может использоваться динамически в цикле foreach:
Удалить ключи массива, скопировав массив
Существует также еще одна практика, которая еще не упомянута. Иногда самый простой способ избавиться от определенных ключей массива - просто скопировать $ array1 в $ array2.
Очевидно, такая же практика применима к текстовым строкам:
источник
Удалить элемент массива на основе ключа:
Используйте
unset
функцию как ниже:Удалить элемент массива на основе значения:
Используйте
array_search
функцию, чтобы получить ключ элемента, и используйте описанный выше способ для удаления элемента массива, как показано ниже:источник
Два способа удаления первого элемента массива с сохранением порядка индекса, а также, если вы не знаете имя ключа первого элемента.
Решение № 1
Решение № 2
Для этого образца данных:
У вас должен быть такой результат:
источник
Используйте следующий код:
источник
array_pop($arr)
удаляет последнюю запись. Нет `=` необходимо.Вывод
источник
Для ассоциативных массивов с нецелыми ключами:
Просто
unset($array[$key])
бы сработало.Для массивов, имеющих целочисленные ключи, и если вы хотите сохранить свои ключи:
$array = [ 'mango', 'red', 'orange', 'grapes'];
array_splice($array, 2, 1);
источник
Это может помочь ...
Результатом будет:
источник
источник