Ответ 1
Клавиши не перетасовываются и не нумеруются. Клавиша unset()
просто удаляется, а остальные остаются.
$a = array(1,2,3,4,5);
unset($a[2]);
print_r($a);
Array
(
[0] => 1
[1] => 2
[3] => 4
[4] => 5
)
Я работаю с циклом PHP, и у меня был один вопрос относительно того, как unset влияет на ключи массива. Этот массив использует стандартные числовые ключи, назначенные PHP, 0, 1, 2, 3 etc...
. Всякий раз, когда unset()
работает по значению массива, клавиши массива перетасовываются или поддерживаются по-прежнему?
Спасибо за ваше время.
Клавиши не перетасовываются и не нумеруются. Клавиша unset()
просто удаляется, а остальные остаются.
$a = array(1,2,3,4,5);
unset($a[2]);
print_r($a);
Array
(
[0] => 1
[1] => 2
[3] => 4
[4] => 5
)
Проверьте это самостоятельно, но вот вывод.
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
)
Они такие, какие были. Этот один ключ просто удаляется
Ключ исчезает, является ли он числовым или нет. Попробуйте выполнить тест 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
?>
Это может немного отличаться от контекста, но при отключении значений из глобального массива применить ответ Майкла Берковски выше, но использовать с $GLOBALS
вместо глобального значения, которое вы указали с помощью global $variable_name
. Итак, это будет что-то вроде:
unset($GLOBALS['variable_name']['array_key']);
Вместо:
global $variable_name;
unset($variable_name['array_key']);
NB. Это работает, только если вы используете глобальные переменные.