PHP: Как удалить конкретный элемент из массива? - PullRequest
135 голосов
/ 15 марта 2010

Как мне удалить элемент из массива, когда я знаю имя элемента? например:

У меня есть массив:

$array = array('apple', 'orange', 'strawberry', 'blueberry', 'kiwi');

пользователь вводит strawberry

strawberry удалено.

Для полного объяснения:

У меня есть база данных, в которой хранится список элементов, разделенных запятой. Код извлекается из списка на основе выбора пользователя, где находится этот выбор. Таким образом, если они выбирают «клубнику», они извлекают код в каждой записи, где находится «клубника», а затем преобразуют ее в массив с помощью split (). Я хочу, чтобы они удалили выбранные пользователем элементы, например, для клубники, из массива.

Ответы [ 20 ]

1 голос
/ 15 марта 2010

Лучшим подходом может быть сохранение ваших значений в качестве ключей в ассоциативном массиве, а затем вызов array_keys() для него, когда вы хотите получить реальный массив. Таким образом, вам не нужно использовать array_search, чтобы найти свой элемент.

0 голосов
/ 15 ноября 2018

Я искал ответ на тот же вопрос и наткнулся на эту тему. Я вижу два основных способа: сочетание array_search & unset и использование array_diff. На первый взгляд мне показалось, что первый метод будет быстрее, так как не требует создания дополнительного массива (как при использовании array_diff). Но я написал небольшой тест и убедился, что второй метод не только более лаконичен, но и быстрее! Рад поделиться этим с вами. :)

https://glot.io/snippets/f6ow6biaol

0 голосов
/ 14 октября 2017
<?php 
$array = array("apple", "orange", "strawberry", "blueberry", "kiwi");
$delete = "strawberry";
$index = array_search($delete, $array);
array_splice($array, $index, 1);
var_dump($array);
?>
0 голосов
/ 14 октября 2017
$remove= "strawberry";
$array = ["apple", "orange", "strawberry", "blueberry", "kiwi"];
foreach ($array as $key => $value) {
        if ($value!=$remove) {
        echo $value.'<br/>';
                continue;
        }
}
0 голосов
/ 14 октября 2017

$ delete = "клубника";

$ index = array_search ($ delete, $ array);

array_splice ($ array, $ index, 1);

0 голосов
/ 11 июня 2016

Создать числовой массив с удалением определенного значения массива

    <?php
    // create a "numeric" array
    $animals = array('monitor', 'cpu', 'mouse', 'ram', 'wifi', 'usb', 'pendrive');

    //Normarl display
    print_r($animals);
    echo "<br/><br/>";

    //If splice the array
    //array_splice($animals, 2, 2);
    unset($animals[3]); // you can unset the particular value
    print_r($animals);

    ?>

Вы можете обратиться по этой ссылке ..

0 голосов
/ 11 февраля 2014
$detils = array('apple', 'orange', 'strawberry', 'blueberry', 'kiwi');
     function remove_embpty($values)
     {
        if($values=='orange')
        {
            $values='any name';
        }
        return $values;
     }
     $detils=array_map('remove_embpty',$detils);
    print_r($detils);
0 голосов
/ 27 декабря 2013

Я бы предпочел использовать array_key_exists для поиска ключей в массивах, например:

Array([0]=>'A',[1]=>'B',['key'=>'value'])

для эффективного поиска указанного, так как array_search и in_array () здесь не работают. И удалите вещи с помощью unset () .

Думаю, это кому-нибудь поможет.

0 голосов
/ 15 мая 2013
unset($array[array_search('strawberry', $array)]);
0 голосов
/ 13 января 2013

Используя array_seach(), попробуйте следующее:

if(($key = array_search($del_val, $messages)) !== false) {
    unset($messages[$key]);
}

array_search() возвращает ключ найденного элемента, который можно использовать для удаления этого элемента из исходного массива с помощью unset(). Он вернет FALSE в случае неудачи, однако может вернуть значение «фальси» в случае успеха (например, ваш ключ может быть 0), поэтому используется оператор строгого сравнения !==.

Оператор if() проверит, вернул ли array_search() значение, и выполнит действие, только если оно имело место.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...