Как создать пустой массив в 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);

6 ответов


нет способа сделать это.

для потомков

лучший способ инициализировать такой массив -array_fill. Однозначно предпочтительнее различные петли и вставить решений.

$my_array = array_fill(0, $size_of_the_array, $some_data);

каждая позиция в $my_array содержит $some_data.


вы не можете предопределить размер массива в 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 ("ключ", $array) или isset ($array ["ключ"])

посмотреть array_key_exists , isset и и array_fill


возможно, связано, если вы хотите инициализировать и заполнить массив диапазоном значений, используйте PHP (подождите его...) функции:

$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, которая предоставляет возможность создавать массив размера исправления.