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