Подобно :
declare int d[0..m, 0..n]
Следующие эквиваленты и приводят к двумерному массиву:
$array = array( array(0, 1, 2), array(3, 4, 5), );
или
$array = array(); $array[] = array(0, 1, 2); $array[] = array(3, 4, 5);
Вы также можете создать ассоциативный массив или массив с хэш-таблицей, указав индекс массива.
$array = array( 0 => array( 'name' => 'John Doe', 'email' => 'john@example.com' ), 1 => array( 'name' => 'Jane Doe', 'email' => 'jane@example.com' ), );
Это эквивалентно
$array = array(); $array[0] = array(); $array[0]['name'] = 'John Doe'; $array[0]['email'] = 'john@example.com'; $array[1] = array(); $array[1]['name'] = 'Jane Doe'; $array[1]['email'] = 'jane@example.com';
Просто объявите? Вам не обязательно. Просто убедитесь, что переменная существует:
$d = array();
Массивы динамически изменяются, и попытка написать что-либо для элемента, отличного от exsistant, создает его (и при необходимости создает цельный массив)
$d[1][2] = 3;
Это справедливо для любого количества измерений без предшествующих объявлений.
Во-первых, PHP не имеет многомерных массивов, он имеет массивы массивов.
Во-вторых, вы можете написать функцию, которая сделает это:
function declare($m, $n, $value = 0) { return array_fill(0, $m, array_fill(0, $n, $value)); }
Или для больших массивов, все с одинаковым значением:
$m_by_n_array = array_fill(0, $n, array_fill(0, $m, $value);
создаст массив $m
by $n
со всем $value
.
Для простого, «заполнить как вы идете» вид решения:
$foo = array(array());
Это даст вам гибкий псевдо-двумерный массив, который может содержать $ foo [ n ] [ n ], где n <= ∞ (конечно, ваш ограничивается обычными ограничениями объема памяти, но вы надеетесь, что я надеюсь). Это теоретически может быть расширено для создания как можно большего количества вспомогательных массивов.
Насколько мне известно, для этого нет встроенной функции php, вам нужно сделать это через цикл или с помощью настраиваемого метода, который рекурсивно вызывает нечто вроде array_fill, искаженное в ответе @Amber;
Я предполагаю, что вы имеете в виду создание пустого массива массивов. Например, вы хотите получить окончательные результаты, как показано ниже, из массива из 3 массивов :
$final_array = array(array(), array(), array());
Это просто для простого кода, но для массива произвольного размера, такого как массив из 3 массивов из 3 массивов, он начинает получать сложную инициализацию перед использованием:
$final_array = array(array(array(), array(), array()), array(array(), array(), array()), array(array(), array(), array()));
…и т.д…
Я расстраиваюсь. Было бы неплохо иметь простой способ объявить инициализированный массив массивов любой глубиной для использования без проверки или метания ошибок.
И для меня аргумент о том, должен ли массив быть разреженным или нет, зависит от контекста.
Например, если $ a [6] [9] не заполняется, это эквивалент $ a [6] [9], заполняемый, например, символом "" или 0.
$r = array("arr1","arr2");
для эха одного элемента массива, который вы должны написать:
echo $r[0]; echo $r[1];
выход будет: arr1 arr2