Как создать пустой массив в PHP с предопределенным размером?

Я создаю новый массив в цикле for.

for $i < $number_of_items $data[$i] = $some_data; 

PHP продолжает жаловаться на смещение, так как для каждой итерации я добавляю новый индекс для массива, который является довольно глупым.

Примечание: Неопределенное смещение: 1 в include () (строка 23 из / … Примечание: Неопределенное смещение: 1 в include () (строка 23 из / .. Примечание: Неопределенное смещение: 1 в include () (строка 23 из / ..

Как я могу это решить? Есть ли способ предопределить количество элементов в массиве, чтобы php не бросал глупую ошибку? подобно

 $myarray = array($size_of_the_earray); 

Это не так.

Для потомков

Лучший способ инициализировать такой массив – array_fill . Весьма предпочтительнее, чем различные решения для петли и вставки.

Вы не можете предопределить размер массива в php. Хорошим способом добиться вашей цели является следующее:

 // Create a new array. $array = array(); // Add an item while $i < yourWantedItemQuantity for ($i = 0; $i < $number_of_items; $i++) { array_push($array, $some_data); //or $array[] = $some_data; for single items. } 

Обратите внимание, что быстрее использовать array_fill () для заполнения массива:

 $array = array_fill(0,$number_of_items, $some_data); 

Если вы хотите проверить, было ли значение установлено в индексе, вы должны использовать следующее: array_key_exists («key», $ array) или isset ($ array ["key"])

См. Array_key_exists , isset и array_fill

Возможно, если вы хотите инициализировать и заполнить массив диапазоном значений, используйте функцию диапазона PHP (wait it …):

 $a = range(1, 5); // array(1,2,3,4,5) $a = range(0, 10, 2); // array(0,2,4,6,8,10) 

Массивы PHP не обязательно должны быть объявлены с размером.

Массив в PHP на самом деле является упорядоченной картой

Вы также не должны получать предупреждение / уведомление, используя код, как показано на примере. Обычным уведомлением, получаемым, является «Неопределенное смещение» при чтении из массива.

Способ борьбы с этим – проверить с помощью isset или array_key_exists или использовать такую ​​функцию, как:

 function isset_or($array, $key, $default = NULL) { return isset($array[$key]) ? $array[$key] : $default; } 

Чтобы избежать повторного кода.

Примечание: isset возвращает false, если элемент в массиве имеет значение NULL, но имеет прирост производительности по сравнению с array_key_exists .

Если вы хотите указать массив с размером по соображениям производительности, посмотрите:

SplFixedArray в стандартной библиотеке PHP.

Существует также array_pad . Вы можете использовать его следующим образом:

 $data = array_pad($data,$number_of_items,0); 

Для инициализации с нулями позиции $ number_of_items массива $ data.

PHP предоставляет два типа массива.

  • нормальный массив
  • SplFixedArray

Обычный массив: этот массив является динамическим.

SplFixedArray: это стандартная библиотека php, которая обеспечивает возможность создания массива размера исправления.