Я пытался преобразовать основную функцию 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 с предопределенным размером?