Как объявить пустой массив в php
Перейти к содержимому

Как объявить пустой массив в php

  • автор:

Заполнение массивов в 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 комментария

    e_svirsky

    с чего это вы интересно взяли что заполнение начнётся с индекса 1 в первом случае?
    не нужно тянуть сюда паскаль
    Решения вопроса 1

    littleguga

    littleguga @littleguga
    Не стыдно не знать, а стыдно не интересоваться.
    Вы ошибаетесь — заполнение идет с 0 индекса.(по ссылке fiddle)

    $arr = array(); array_push($arr, "test"); print_r($arr);

    Сами проверьте, вот здесь, например.
    Ответ написан более трёх лет назад
    Комментировать
    Нравится 1 Комментировать
    Ответы на вопрос 2

    danil_sport

    Danil Akhtarov @danil_sport
    Web, android, C++
    PHP.нет посмотри тут. В свое время помогло
    Ответ написан более трёх лет назад
    Комментировать
    Нравится Комментировать

    elevenelven

    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])

    elevenelven

    Alex Safonov @elevenelven

    Алексей: Будьте добры, приведите полностью код который эквивалентен второму листингу. Я думаю вы не имеете ввиду

    $arr = array(); unset($arr[0]); array_push($arr, 1);

    vadimkot

    Алексей: вы каким то не тем php пользуетесь — при инициализации массива в него никакие элементы не добавляются и если выполнить array_push() после инициализации, то в массиве появится элемент с индексом 0.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *