Навигатор сайта : Разделы Информационные технологии Совместное использование unset и array_push на php

Совместное использование unset и array_push на php

Многие разработчики на php неоднократно сталкивались с необходимостью упорядоченного, структурированного хранения нескольких переменных и работы с ними. Как нельзя лучше для этих целей подходят массивы. Также неоднократно возникает необходимость добавить или удалить какой-либо элемент из массива. Иногда это делается с помощью функций array_push и unset.

Как говорят источники,

array_push Добавляет один или несколько элеметов в конец массива.

Так, например, чтобы добавить 1 элемент в конец массива, некоторые используют такой код:

array_push($arr"value");

Далее информация:

unset() - разрушает специфицированные переменные.

Опять же пример:

unset($arr['key1']); //удалит элемент с ключом key1

Но, в некоторых случаях, разработчика могут поджидать интересные неожиданности в результате совместной работы этих функций!

Как Вы думаете, какой Вы получите результат работы этого кода:

<?php
$arr = array();
array_push($arr,'A'); //добавляем массив 1 элемент 'A'
array_push($arr,'B'); //добавляем в конец массива 'B'
array_push($arr,'C'); //добавляем в конец массива 'C'
unset($arr[count($arr)-1]); //удаляем последний элемент массива
array_push($arr,'D'); //добавляем в конец массива 'D'.
print_r($arr);
?>

Такой?

Array ( [0] => A [1] => B [2] => D )

Хрен там, Вы получите вот этот массив:

Array ( [0] => A [1] => B [3] => D )

То есть порядковая нумерация ключей сбилась! И после удаления элемента, индекс ключей не уменьшился на 1.

И если Вы, вдруг, захотите пройтись перебором по его элементам с помощью функции

for ($=0;$i<count($arr);$i++) {
//делать что-то с $arr[$i];
}

То Вы получите весьма непредсказуемый результат.

Т.е. в данном случае Вам уже придется использовать функцию

foreach ($arr as $arrelement) {
//делать что-то с $arrelement;
}

Тогда Вы получите адекватный результат.

Если же Вы планируете в дальнейшем пройтись по элементам массива с помощью перебора и функции for, то изначально Вам нужно использовать другой код для добавления элементов в массив:

<?php
$arr = array();
$arr[count($arr)]='A'; //добавляем массив 1 элемент 'A'
$arr[count($arr)]='B'; //добавляем в конец массива 'B'
$arr[count($arr)]='C'; //добавляем в конец массива 'C'
unset($arr[count($arr)-1]); //удаляем последний элемент массива
$arr[count($arr)]='D'; //добавляем в конец массива 'D'
print_r($arr);
?>

Тогда массив действительно будет таким:

Array ( [0] => A [1] => B [2] => D )

Надеюсь данный ликбез кому-то оказался полезен и он сделал соответствующие выводы.

Удачных Вам проектов!

Добавить комментарий


Защитный код
Обновить

Счетчик определения тИЦ и PR Яндекс.Метрика

для детей старше 12 лет