При объявлении массива в PHP индекс может быть создан не в порядке … Т.е.
Массив [1] = 1 Массив [19] = 2 Массив [4] = 3
Мой вопрос. При создании массива, подобного этому, длина 19 с нулями между ними? Если бы я попытался получить Array [3], получилось бы это неопределенным или выбросило ошибку? Кроме того, как это влияет на память. Будет ли память 3-го индекса взята или 19?
Также в настоящее время разработчик написал скрипт с 3 массивами FailedUpdates [] FailedDeletes [] FailedInserts []
Является ли это более эффективным для этого, или сделать это в случае ассоциативного массива, управляющего несколькими вспомогательными массивами
"Failures" array(){ ["Updates"] => array(){ [0] => 12 [1] => 41 } ["Deletes"] => array(){ [0] => 122 [1] => 414 [1] => 43 } ["Inserts"] => array(){ [0] => 12 } }
Эффективность памяти – это не то, о чем вам нужно беспокоиться в PHP, если вы не имеете дело с действительно огромными массивами / огромным количеством переменных.
Массив в PHP не очень похож на массив на C ++ или аналогичный язык более низкого уровня; массив в PHP – это карта. У вас есть список ключей (которые должны быть уникальными и все строки типа или целочисленные) и список значений, соответствующих ключам. Итак, следующий законный массив:
array(0 => 'butt', 1 => 'potato', 2 => 'tulip')
но так
array(5 => 'i', 'barry' => 6, 19 => array(-1 => array(), 7 => 'smock'))
В обоих случаях в массиве есть 3 записи, поэтому 3 ключа и 3 значения.
В дополнение к ключам и значениям в массиве один массив может отличаться от другого порядком, в котором происходят пары ключ / значение. Если вы определяете массив так, чтобы он имел неотрицательные целые числа в качестве ключей, это часто будет ожидаемым порядком. Порядок имеет значение при использовании таких конструкций, как foreach()
.
array [3] будет undefined / unset, но не вызывает ошибку, и массив будет использовать только память для этих 3 значений – php не похож на C, где вы должны смотреть на эти вещи.
Notice: Undefined offset: 3 in /data/home/sjoerd/public_html/svnreps/test/a.php on line 3
. Вы можете избежать этого, проверив с помощью isset()
или array_key_exists()
.