Intereting Posts

Эффективность и масштабируемость массива PHP

При объявлении массива в 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, где вы должны смотреть на эти вещи.

  • Доступ к $ arr [3] дает уведомление: Notice: Undefined offset: 3 in /data/home/sjoerd/public_html/svnreps/test/a.php on line 3 . Вы можете избежать этого, проверив с помощью isset() или array_key_exists() .
  • Нет нулей.
  • Наличие пустых элементов не займет дополнительной памяти.
  • Следует ли использовать несколько переменных или массив, зависит от контекста и от того, как вы используете переменные.