Я пытался преобразовать основную функцию Javascript в PHP, и я увидел, что одна из переменных была объявлена var Variable = new Array (13)
.
Я знаю, что переменные PHP объявляются как: $variable = array()
но как насчет «13» в new Array(13)
? это переводит в $variable = array(13)
? Я пробовал это, но он, похоже, не работал.
Это в Javascript
var results = new Array (13);
становится это в PHP, я прав?
$results = array(13);
Фактически, в этом контексте вы создаете массив размером 13
.
Вам не нужно предварительно распределять массивы на PHP, но вы можете сделать что-то вроде:
$result = array_fill( 0, 12, null);
Это создаст массив из 13 элементов (индексы от 0 до 12), значения которых равны null
.
Также обратите внимание, что для массивов фиксированного размера используется SplFixedArray
$array = new SplFixedArray(5);
new Array(someNumber)
в JS создает массив, содержащий элементы someNumber
которые не undefined
. Если вы не хотите, чтобы вы всегда использовали [...]
для создания массива с некоторыми элементами, поскольку этот синтаксис не является двусмысленным, а new Array()
работает по-разному в зависимости от количества и типа аргументов.
array(13)
в PHP, однако, создает массив, содержащий одно значение 13
.
Примерно аналогичная функция в PHP – array_fill(0, 12, null)
. Однако PHP может выделять пустой массив, а затем вырастить его при его заполнении.
Нет, помещение числа внутри скобки в PHP добавляет одно значение в массив, который является int 13. В то время как число в JS внутри скобки делает массив с таким количеством неопределенных значений.
Массивы на PHP динамичны, вам не нужно объявлять их размер, как вы иногда делаете в JS.
Это создает массив с 13 неопределенными значениями:
var results = new Array (13);
Это создает массив с первым индексом (индекс 0), равным 13:
$results = array(13);
Так что это неправильно. Если вы хотите получить тот же результат, что и у javascript, вам понравится следующее:
$results = array_fill(0, 13, '');
Вы также можете проверить этот вопрос:
Как создать пустой массив в PHP с предопределенным размером?