Подтвердить что ты не робот

Значение Unset Array для PHP

Я работаю с циклом PHP, и у меня был один вопрос относительно того, как unset влияет на ключи массива. Этот массив использует стандартные числовые ключи, назначенные PHP, 0, 1, 2, 3 etc.... Всякий раз, когда unset() работает по значению массива, клавиши массива перетасовываются или поддерживаются по-прежнему?

Спасибо за ваше время.

4b9b3361

Ответ 1

Клавиши не перетасовываются и не нумеруются. Клавиша unset() просто удаляется, а остальные остаются.

$a = array(1,2,3,4,5);
unset($a[2]);
print_r($a);

Array
(
    [0] => 1
    [1] => 2
    [3] => 4
    [4] => 5
)

Ответ 2

Проверьте это самостоятельно, но вот вывод.

php -r '$a=array("a","b","c"); print_r($a); unset($a[1]); print_r($a);'
Array
(
    [0] => a
    [1] => b
    [2] => c
)
Array
(
    [0] => a
    [2] => c
)

Ответ 3

Они такие, какие были. Этот один ключ просто удаляется

Ответ 4

Ключ исчезает, является ли он числовым или нет. Попробуйте выполнить тест script ниже.

<?php
    $t = array( 'a', 'b', 'c', 'd' );
    foreach($t as $k => $v)
        echo($k . ": " . $v . "<br/>");
    // Output: 0: a, 1: b, 2: c, 3: d

    unset($t[1]);

    foreach($t as $k => $v)
        echo($k . ": " . $v . "<br/>");
    // Output: 0: a, 2: c, 3: d
?>

Ответ 5

Это может немного отличаться от контекста, но при отключении значений из глобального массива применить ответ Майкла Берковски выше, но использовать с $GLOBALS вместо глобального значения, которое вы указали с помощью global $variable_name. Итак, это будет что-то вроде:

unset($GLOBALS['variable_name']['array_key']);

Вместо:

global $variable_name; unset($variable_name['array_key']);

NB. Это работает, только если вы используете глобальные переменные.