Удаление элемента из массива в PHP - PullRequest
2250 голосов
/ 15 декабря 2008

Есть ли простой способ удалить элемент из массива с помощью PHP, такой что foreach ($array) больше не включает этот элемент?

Я думал, что установка на null сделает это, но, видимо, это не работает.

Ответы [ 38 ]

0 голосов
/ 29 мая 2019
$arrayName = array( '1' => 'somevalue',
                    '2' => 'somevalue1',
                    '3' => 'somevalue3',
                  );

print_r($arrayName[1]);
// somevalue
unset($arrayName[1]);

print_r($arrayName);
0 голосов
/ 07 февраля 2019

Мы можем изменить содержимое переменной со ссылкой, используя foreach:

<?php
    // Remove all elements in the array
    foreach ($array as &$arr) {
        $arr = null;
    }
0 голосов
/ 23 июня 2017

Для тех из вас, кто ищет hash#delete эквивалент Ruby в PHP:

<?php
    function array_delete(&$array, $key) {
        if (!isset($array[$key])) {
            return null;
        }

        $value = $array[$key];
        unset($array[$key]);
        return $value;
    }

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

0 голосов
/ 30 октября 2017

Вы можете просто использовать unset() для удаления массива.

Помните, что массив должен быть сброшен после функции foreach.

0 голосов
/ 10 марта 2018

unset не меняет индекс, но array_splice делает:

$arrayName = array('1' => 'somevalue',
                   '2' => 'somevalue1',
                   '3' => 'somevalue3',
                   500 => 'somevalue500',
                  );


    echo $arrayName['500'];
    //somevalue500
    array_splice($arrayName, 1, 2);

    print_r($arrayName);
    //Array ( [0] => somevalue [1] => somevalue500 )


    $arrayName = array( '1' => 'somevalue',
                        '2' => 'somevalue1',
                        '3' => 'somevalue3',
                        500 => 'somevalue500',
                      );


    echo $arrayName['500'];
    //somevalue500
    unset($arrayName[1]);

    print_r($arrayName);
    //Array ( [0] => somevalue [1] => somevalue500 )
0 голосов
/ 24 апреля 2018

Для выполнения этой задачи есть два метода: unset () и array_splice ()

Допустим, два массива:

$array_1 = array('a'=>'One', 'b'=>'Two', 'c'=>'Three');

$array_2 = array('Red', 'Yellow', 'White', 'Black', 'Green');

С неустановленным ()

syntax - unset(array_element)

unset($array_1['a']); // Any valid key
unset($array_2[0]); // Any valid index
  • после удаления элемента массива индекс массива не изменяется

С array_splice ()

syntax - array_splice(array, index, length)

array_splice($array_1, 1, 1); // Remove one element from $array_1 from index 1
array_splice($array_2, 3, 1); // Remove one element from $array_2 from index 3
  • Все элементы массива переиндексируются после удаления элемента из массива
0 голосов
/ 21 марта 2018

Вы можете использовать метод array_pop , чтобы удалить последний элемент массива:

<?php
    $a = array("one", "two", "Three");
    array_pop($a);
    print_r($a);
?>
The out put will be
Array ( [0] => one[1] => two)
0 голосов
/ 21 марта 2018

$x = array(1, 2, 3, 4, 5);
var_dump($x);
unset($x[3]); // Here is the key to be deleted
echo '<br>';
array_values($x);
var_dump($x);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...