Заполнение массивов в PHP
Элементы в массив не обязательно добавлять сразу в момент объявления этого массива. Можно вначале объявить этот массив пустым, а затем добавить в него необходимые элементы, вот так:
Массив не обязательно должен быть изначально пустым — там уже что-то может быть, но мы все равно можем добавлять новые элементы:
Пусть дан пустой массив:
Описанным способом заполните этот массив элементами со значениями 1 , 2 , 3 , 4 и 5 .
Пусть дан такой массив:
Добавьте ему в конец элементы 4 и 5 .
Как создать пустой массив определённой длины?
как создать пустой массив определённой длины. Например, числовой массив длинною Х элементов. Или двумерный массив длинной Х и шириной У.
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:

Как при определённой итерации цикла создать новую строку в таблице HTML?
будет смесь php и html, по-другому не знаю как описать проблему. Есть много папок, программа.
Как создать пустой массив
Как создать пустой массив?

Как создать пустой массив определенной размерности?
Не могу найти информацию как создать пустой массив. То есть выделить под него память, но ничем не.

Потребляет ли массив определённой длины больше памяти, чем такое же кол-во переменных
Здравствуйте. Отличается ли массив int’от из, к примеру, 5 элементов от 5 переменных типа int по.
Как объявить пустой массив в php
There is another kind of array (php>= 5.3.0) produced by
$array = new SplFixedArray(5);
Standard arrays, as documented here, are marvellously flexible and, due to the underlying hashtable, extremely fast for certain kinds of lookup operation.
Supposing a large string-keyed array
$arr=[‘string1’=>$data1, ‘string2’=>$data2 etc. ]
when getting the keyed data with
php does *not* have to search through the array comparing each key string to the given key (‘string1’) one by one, which could take a long time with a large array. Instead the hashtable means that php takes the given key string and computes from it the memory location of the keyed data, and then instantly retrieves the data. Marvellous! And so quick. And no need to know anything about hashtables as it’s all hidden away.
However, there is a lot of overhead in that. It uses lots of memory, as hashtables tend to (also nearly doubling on a 64bit server), and should be significantly slower for integer keyed arrays than old-fashioned (non-hashtable) integer-keyed arrays. For that see more on SplFixedArray :
Unlike a standard php (hashtabled) array, if you lookup by integer then the integer itself denotes the memory location of the data, no hashtable computation on the integer key needed. This is much quicker. It’s also quicker to build the array compared to the complex operations needed for hashtables. And it uses a lot less memory as there is no hashtable data structure. This is really an optimisation decision, but in some cases of large integer keyed arrays it may significantly reduce server memory and increase performance (including the avoiding of expensive memory deallocation of hashtable arrays at the exiting of the script).
5 years ago
When creating arrays , if we have an element with the same value as another element from the same array, we would expect PHP instead of creating new zval container to increase the refcount and point the duplicate symbol to the same zval. This is true except for value type integer.
Example:
$arr = [‘bebe’ => ‘Bob’, ‘age’ => 23, ‘too’ => 23 ];
xdebug_debug_zval( ‘arr’ );
(refcount=2, is_ref=0)
array (size=3)
‘bebe’ => (refcount=1, is_ref=0)string ‘Bob’ (length=3)
‘age’ => (refcount=0, is_ref=0)int 23
‘too’ => (refcount=0, is_ref=0)int 23
but :
$arr = [‘bebe’ => ‘Bob’, ‘age’ => 23, ‘too’ => ’23’ ];
xdebug_debug_zval( ‘arr’ );
(refcount=2, is_ref=0)
array (size=3)
‘bebe’ => (refcount=1, is_ref=0)string ‘Bob’ (length=3)
‘age’ => (refcount=0, is_ref=0)int 23
‘too’ => (refcount=1, is_ref=0)string ’23’ (length=2)
or :
$arr = [‘bebe’ => ‘Bob’, ‘age’ => [1,2], ‘too’ => [1,2] ];
xdebug_debug_zval( ‘arr’ );
(refcount=2, is_ref=0)
array (size=3)
‘bebe’ => (refcount=1, is_ref=0)string ‘Bob’ (length=3)
‘age’ => (refcount=2, is_ref=0)
array (size=2)
0 => (refcount=0, is_ref=0)int 1
1 => (refcount=0, is_ref=0)int 2
‘too’ => (refcount=2, is_ref=0)
array (size=2)
0 => (refcount=0, is_ref=0)int 1
1 => (refcount=0, is_ref=0)int 2
3 months ago
This function makes (assoc.) array creation much easier:
function arr (. $array )< return $array ; >
?>
It allows for short syntax like:
$arr = arr ( x : 1 , y : 2 , z : 3 );
?>
Instead of:
$arr = [ «x» => 1 , «y» => 2 , «z» => 3 ];
// or
$arr2 = array( «x» => 1 , «y» => 2 , «z» => 3 );
?>
Sadly PHP 8.2 doesn’t support this named arguments in the «array» function/language construct.
- Типы
- Введение
- Система типов
- NULL
- Логический тип
- Целые числа
- Числа с плавающей точкой
- Строки
- Числовые строки
- Массивы
- Объекты
- Перечисления
- Ресурс
- Функции обратного вызова (callback-функции)
- Mixed
- Void
- Never
- Относительные типы классов
- Value types
- Итерируемые
- Объявление типов
- Манипуляции с типами
- Copyright © 2001-2023 The PHP Group
- My PHP.net
- Contact
- Other PHP.net sites
- Privacy policy
Объявить пустой массив php?
Как объявить пустой массив?
если $arr = array();
то заполнение начнется с индекса 1($arr[1]).
Можно так:
$arr = array();
unset($arr[0]);
но как это сделать правильнее и проще?- Вопрос задан более трёх лет назад
- 23007 просмотров
2 комментария
Оценить 2 комментария

с чего это вы интересно взяли что заполнение начнётся с индекса 1 в первом случае?
не нужно тянуть сюда паскаль
Решения вопроса 1
littleguga @littleguga
Не стыдно не знать, а стыдно не интересоваться.
Вы ошибаетесь — заполнение идет с 0 индекса.(по ссылке fiddle)$arr = array(); array_push($arr, "test"); print_r($arr);Сами проверьте, вот здесь, например.
Ответ написан более трёх лет назад
Комментировать
Нравится 1 Комментировать
Ответы на вопрос 2
Danil Akhtarov @danil_sport
Web, android, C++
PHP.нет посмотри тут. В свое время помогло
Ответ написан более трёх лет назад
Комментировать
Нравится Комментировать
Alex Safonov @elevenelven
Php Dev @ Amadeus
Это описывается в руководстве.
php.net/manual/en/function.array.php'January', 'February', 'March'); print_r($firstquarter); ?>Как вариант, можете после наполнения массива, вставить в начало элемент, и убрать. Что двинет все ключи на 1.
$array = [1,2,3]; array_unshift($array, '' ); unset($array[0]);Ответ написан более трёх лет назад
Михаил @Madfisht3 Автор вопросаНужно пустой массив объявить. Чтобы там не было элементов. Объявить, но так, чтоб он был не инициализирован.
Алексей Объявляйте массив как обычно (array() или []). При добавлении в массив указываете нужный ключ ($arr[1] = 3.14)
Михаил @Madfisht3 Автор вопроса
krypt3r: а если у меня заполнение идёт через array_push? Тогда у меня первый элемент будет пустой, на сайте это лишняя строчка пустая.
Михаил @Madfisht3 Автор вопроса
Neoline: 500 Ошибка.
Михаил @Madfisht3 Автор вопроса
Второй листинг эквивалентен unset($arr[0])
Alex Safonov @elevenelven
Алексей: Будьте добры, приведите полностью код который эквивалентен второму листингу. Я думаю вы не имеете ввиду
$arr = array(); unset($arr[0]); array_push($arr, 1);
Алексей: вы каким то не тем php пользуетесь — при инициализации массива в него никакие элементы не добавляются и если выполнить array_push() после инициализации, то в массиве появится элемент с индексом 0.