php的数组怎么定义长度啊

imarshal 2017-02-23 11:35:14
python还有javascript都支持,php为什么不支持啊

比如定义一个数组,然后传给函数,作为out类型,当然函数中数组的长度会用到,php应该怎么来实现,要象c/c++一样专门传个数组的长度参数啊
...全文
855 点赞 收藏 45
写回复
45 条回复
salmonl 2019年07月09日
这是个好问题啊,顶起来。很多人回复问题很好笑,大概率是一开始习惯了PHP数组的用法,而没有深入去思考。
回复 点赞
xuzuning 2017年02月24日
天下文章一大抄,看你会抄不会抄 借鉴别人的先进做法有什么不好? 如果你打算通过形参传回数组,那么需要声明该数组是传引用的
$a = array();
foo($a);
print_r($a);

function foo(&$x) {
  for($i=0; $i<10; $i++) {
    $a[] = $i;
  }
}
回复 点赞
imarshal 2017年02月24日
引用 33 楼 youbl 的回复:
不同语言有不同语言的特点, 楼上已经解释的很清楚,php里的是hash表,没有真正意义上的数组,只是借用了array这个名称, 这种设计你可以说好,可以说不好,php就是这么设计的, 至于其它的语言,一样也是有差异的,这个不能作为php好坏的判断标准, 适合的才是最好的, 比如php和js一样是弱类型,java和c#是强类型, 你觉得弱好还是强好? 纠结于语言特性,不如纠结于怎么实现你的需求
不要什么hash了,就是抄的shell,我的需求php无解,没办法区分参数是out和in/out数组,只能另外传个长度的参数
回复 点赞
水边2 2017年02月24日
不同语言有不同语言的特点, 楼上已经解释的很清楚,php里的是hash表,没有真正意义上的数组,只是借用了array这个名称, 这种设计你可以说好,可以说不好,php就是这么设计的, 至于其它的语言,一样也是有差异的,这个不能作为php好坏的判断标准, 适合的才是最好的, 比如php和js一样是弱类型,java和c#是强类型, 你觉得弱好还是强好? 纠结于语言特性,不如纠结于怎么实现你的需求
回复 点赞
Evillad 2017年02月24日
666666663六
回复 点赞
imarshal 2017年02月24日
引用 41 楼 jordan102 的回复:
$a = array();
foo($a, 3);
print_r($a);
 
function foo(&$x, $len) {
  for($i=0; $i<$len; $i++) {
    $x[] = $i;
  }
}
效果与你的js一样,只是语言之间有所差异,变通一下就行了。
就是这样,上面说用什么array_fill,想了想不对
回复 点赞
Cherish_ws 2017年02月24日
拿什么工具做什么事。 看笑了。。。。。。。。
回复 点赞
一起混吧 2017年02月24日
如果只想传递一个参数的话就是 #11 的代码了,与你的js代码基本效果一样。
回复 点赞
一起混吧 2017年02月24日
php 没有js那种初始化数组给定长度的写法 直接 $a = array(); 就是初始化了 你这里 a = new Array(3) 的3也是传参的意思,又起不到限制数组长度的作用
for (var i = 0; i < 4; i++) {
   a[i] = i
 }
alert(a);  // 0,1,2,3
里边照样能修改数组长度 不同的是js在函数中能改变全局变量的值,而php中在函数中不能改变全局变量的值,用么用return 给全局变量,要么传引用
$a = array();
foo($a, 3);
print_r($a);
 
function foo(&$x, $len) {
  for($i=0; $i<$len; $i++) {
    $x[] = $i;
  }
}
效果与你的js一样,只是语言之间有所差异,变通一下就行了。
回复 点赞
Frank_cic 2017年02月24日
拉一把谈何容易? 我倒是怕真拉出来了以后会坑苦写php的同事.不能尊重一门语言,也不懂得尊重贡献者的人,难以为伍.
引用 37 楼 xuzuning 的回复:
但是对于一个钻进故纸堆不能自拔的失足青年,能拉一把还是拉一把吧 总是不能眼看着他走向绝路的
回复 点赞
wodebaobei12611 2017年02月24日
偶然点进这个帖子然后看笑了
回复 点赞
imarshal 2017年02月24日
引用 35 楼 xuzuning 的回复:
天下文章一大抄,看你会抄不会抄 借鉴别人的先进做法有什么不好? 如果你打算通过形参传回数组,那么需要声明该数组是传引用的
$a = array();
foo($a);
print_r($a);

function foo(&$x) {
  for($i=0; $i<10; $i++) {
    $a[] = $i;
  }
}
真是太搞笑了,谁和你说固定是10了,不传个参数怎么得到这个值
回复 点赞
xuzuning 2017年02月24日
但是对于一个钻进故纸堆不能自拔的失足青年,能拉一把还是拉一把吧 总是不能眼看着他走向绝路的
引用 36 楼 leaf7017cn 的回复:
[quote=引用 35 楼 xuzuning 的回复:] 天下文章一大抄,看你会抄不会抄 借鉴别人的先进做法有什么不好? 如果你打算通过形参传回数组,那么需要声明该数组是传引用的
$a = array();
foo($a);
print_r($a);

function foo(&$x) {
  for($i=0; $i<10; $i++) {
    $a[] = $i;
  }
}
大哥,您真是好耐心. 您还没看明白吗? 在人家眼里C才是最好的,只要是和C不同的就是劣等,PHP是没有new定长数组的,所以就是"残缺"的,hash就是抄shell的. 我觉得这不是代码或者什么方式能解决的,心态不对你还指望它怎么能接受你的答案? 我考虑记住这个id,从此忽略.大哥您保重.[/quote]
回复 点赞
Frank_cic 2017年02月24日
引用 35 楼 xuzuning 的回复:
天下文章一大抄,看你会抄不会抄 借鉴别人的先进做法有什么不好? 如果你打算通过形参传回数组,那么需要声明该数组是传引用的
$a = array();
foo($a);
print_r($a);

function foo(&$x) {
  for($i=0; $i<10; $i++) {
    $a[] = $i;
  }
}
大哥,您真是好耐心. 您还没看明白吗? 在人家眼里C才是最好的,只要是和C不同的就是劣等,PHP是没有new定长数组的,所以就是"残缺"的,hash就是抄shell的. 我觉得这不是代码或者什么方式能解决的,心态不对你还指望它怎么能接受你的答案? 我考虑记住这个id,从此忽略.大哥您保重.
回复 点赞
imarshal 2017年02月23日
引用 5 楼 xuzuning 的回复:
直接 return 就是了,作为形参要引用 无论如何都不需要指明数组的大小
比如定义数组长度是10,但由于是out类型初始化没意义,php应该怎么做啊,用javascript的话new Array(10)就可以了,然后length就能得到值了
回复 点赞
xuzuning 2017年02月23日
直接 return 就是了,作为形参要引用 无论如何都不需要指明数组的大小
回复 点赞
imarshal 2017年02月23日
引用 3 楼 xuzuning 的回复:
out类型 是什么类型? 你替 php 生的?
就是值传出,意思理解就可以了
回复 点赞
xuzuning 2017年02月23日
out类型 是什么类型? 你替 php 生的?
回复 点赞
imarshal 2017年02月23日
引用 1 楼 xuzuning 的回复:
count(数组)
说了是out类型
回复 点赞
xuzuning 2017年02月23日
count(数组)
回复 点赞
发动态
发帖子
基础编程
创建于2007-09-28

9735

社区成员

14.0w+

社区内容

从PHP安装配置,PHP入门,PHP基础到PHP应用
社区公告
暂无公告