我试图将基本的Javascript函数转换为PHP,发现其中一个变量被声明为var Variable = new Array (13)
。
我知道PHP变量的声明如下:$variable = array()
但是new Array(13)
中的"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);
http://php.net/manual/en/class.splfixedarray.php
new Array(someNumber)
创建一个包含someNumber
元素的数组,这些元素是undefined
。除非您愿意,否则您应该始终使用[...]
来创建包含某些元素的数组,因为该语法并不含糊,而new Array()
的工作方式因参数的数量和类型而异。
然而,PHP中的array(13)
创建了一个包含单个值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中创建一个预定义大小的空数组?