php的数组怎么定义长度啊

python还有javascript都支持,php为什么不支持啊

比如定义一个数组,然后传给函数,作为out类型,当然函数中数组的长度会用到,php应该怎么来实现,要象c/c++一样专门传个数组的长度参数啊

回复讨论(解决方案)

count(数组)

count(数组)

说了是out类型

out类型 是什么类型?

你替 php 生的?

out类型 是什么类型?

你替 php 生的?

就是值传出,意思理解就可以了

直接 return 就是了,作为形参要引用

无论如何都不需要指明数组的大小

直接 return 就是了,作为形参要引用

无论如何都不需要指明数组的大小

比如定义数组长度是10,但由于是out类型初始化没意义,php应该怎么做啊,用javascript的话new array(10)就可以了,然后length就能得到值了

php 不需要指定数组长度, 也无法指定长度, 你只有知道输出类型是数组就可以了。

php 数组拿来就用,数组可大可小,没有边界限制,无需定长. 这和c是有很大区别的.

不知道你要干什么,最好拿出示例代码.

php 数组拿来就用,数组可大可小,没有边界限制,无需定长. 这和c是有很大区别的.

不知道你要干什么,最好拿出示例代码.

我贴个javascript的好了,你看看php怎么实现,只想到象c/c++一样传个数组长度的参数

function f(a) {
for (var i = 0; i < a.length; i++) { a[i] = i } } a = new array(3) f(a)

function f($a) {
$a = [];
for ($i = 0; $i < $a; $i++) { $array[$i] = $i; } return $array; } $a = f(3);

function f($a) {
$array = [];
for ($i = 0; $i < $a; $i++) { $array[$i] = $i; } return $array; } $a = f(3); 上面手滑

和其他语言不同,php 的数组不是真正意义上的数组,而是个 哈希表

php 只是借用了 array 这个名称而已

如果你一定要创建一个有初始长度空数组的话,那么可以
$ar = array_fill(0, 10, 0);

function f($a) {
$array = [];
for ($i = 0; $i < $a; $i++) { $array[$i] = $i; } return $array; } $a = f(3); 上面手滑

这种方法既不好也不对,看着像返回堆栈数组,而且只能返回一个

和其他语言不同,php 的数组不是真正意义上的数组,而是个 哈希表

php 只是借用了 array 这个名称而已

如果你一定要创建一个有初始长度空数组的话,那么可以
$ar = array_fill(0, 10, 0);

那象c/c++一样加个数组长度的参数,实际用的多不多啊

c/c++ 是编译运行的,数组需要在编译时就分配内存空间

如果是运行动态请求的内存,那指定长度就更有必要了

而 php 是解释执行的,变量是以变量表项的形式存储的(变量表项的大小是固定的)并不直接与内存挂钩

因此没有必要指定长度

function f($a) {
$array = [];
for ($i = 0; $i < $a; $i++) { $array[$i] = $i; } return $array; } $a = f(3); 上面手滑

这种方法既不好也不对,看着像返回堆栈数组,而且只能返回一个

难道不是你js写成这样我才干成这样的么?

难道不是你js写成这样我才干成这样的么?

我javascript也刚学,写的有什么问题啊,我写的是作为参数你的是作为返回值

c/c++ 是编译运行的,数组需要在编译时就分配内存空间

如果是运行动态请求的内存,那指定长度就更有必要了

而 php 是解释执行的,变量是以变量表项的形式存储的(变量表项的大小是固定的)并不直接与内存挂钩

因此没有必要指定长度

那就只能用array_fill了,虽然对于out类型的有点多此一举

难道不是你js写成这样我才干成这样的么?

我javascript也刚学,写的有什么问题啊,我写的是作为参数你的是作为返回值

我的天哪,原来你指的是new array(3)? php里根本没这玩意,真想创建一个定长空值数组,就按#14楼那样写就好了.

array_fill 也不需要,直接初始化空数组就可以了

难道不是你js写成这样我才干成这样的么?

我javascript也刚学,写的有什么问题啊,我写的是作为参数你的是作为返回值

我的天哪,原来你指的是new array(3)? php里根本没这玩意,真想创建一个定长空值数组,就按#14楼那样写就好了.

什么意思,你以为我在说什么,明显是php的问题,java/c#/python/javascript都支持

array_fill 也不需要,直接初始化空数组就可以了

说了out类型,不需要初始化,只要个长度值

array_fill 也不需要,直接初始化空数组就可以了

说了out类型,不需要初始化,只要个长度值

好吧,php有罪,不支持定长数组.

你自己都不知道自己在说什么

你自己都不知道自己在说什么

你还是php的粉丝啊,java/c#不说,就是javascript的new array(10)、python的[int] * 10,不需要初始化,php不支持不就得了

function f(&$array)
{
for ($i = 0; $i < count($array); $i++) { $array[$i] = $i; } } $a = array_fill(0, 3, 0); f($a); 这样你满意了? 呵呵.. 结不结帖你随意吧. 勿回. 我也不进来了.

function f(&$array)
{
for ($i = 0; $i < count($array); $i++) { $array[$i] = $i; } } $a = array_fill(0, 3, 0); f($a); 这样你满意了? 呵呵.. 结不结帖你随意吧. 勿回. 我也不进来了.

当然不满意,初始化多此一举,不过也没其他更好的办法只能这样了

javascript的new array(10)、python的[int] * 10

既是 php 的 array_fill(0, 10, 0)

已经跟你说了,php 是不需要这样初始化的

因为 php 远比那些语言聪明

javascript的new array(10)、python的[int] * 10

既是 php 的 array_fill(0, 10, 0)

已经跟你说了,php 是不需要这样初始化的

因为 php 远比那些语言聪明

什么聪明,我看就是抄的shell

php不需要先定义长度。

因为php是高级语言,这些已经封装好了。

php不需要先定义长度。

因为php是高级语言,这些已经封装好了。

想了想,还是准备象c/c++一样传递个长度的参数,array_fill写着感觉不太好

666666663六

不同语言有不同语言的特点,

楼上已经解释的很清楚,php里的是hash表,没有真正意义上的数组,只是借用了array这个名称,

这种设计你可以说好,可以说不好,php就是这么设计的,

至于其它的语言,一样也是有差异的,这个不能作为php好坏的判断标准,

适合的才是最好的,

比如php和js一样是弱类型,java和c#是强类型,

你觉得弱好还是强好?

纠结于语言特性,不如纠结于怎么实现你的需求

不同语言有不同语言的特点,

楼上已经解释的很清楚,php里的是hash表,没有真正意义上的数组,只是借用了array这个名称,

这种设计你可以说好,可以说不好,php就是这么设计的,

至于其它的语言,一样也是有差异的,这个不能作为php好坏的判断标准,

适合的才是最好的,

比如php和js一样是弱类型,java和c#是强类型,

你觉得弱好还是强好?

纠结于语言特性,不如纠结于怎么实现你的需求

不要什么hash了,就是抄的shell,我的需求php无解,没办法区分参数是out和in/out数组,只能另外传个长度的参数

天下文章一大抄,看你会抄不会抄

借鉴别人的先进做法有什么不好?

如果你打算通过形参传回数组,那么需要声明该数组是传引用的

$a = array();
foo($a);
print_r($a);
function foo(&$x) {
for($i=0; $i

Posted in 未分类