在写代码的时候遇见一个和诡异的问题
$stack = '';
$collections = [1,2,3,4,5,6];
foreach($collections as $key => $collection) {
$stack[$key] = $collection . '_' . $key;
}
var_dump($stack);
同样的代码,在php7中输出是1234567
但是在php5中却是
array(7) {
[0]=>
string(3) "1_0"
[1]=>
string(3) "2_1"
[2]=>
string(3) "3_2"
[3]=>
string(3) "4_3"
[4]=>
string(3) "5_4"
[5]=>
string(3) "6_5"
[6]=>
string(3) "7_6"
}
这是为什么呢
网上的样例没有说明为什么,求大佬解答,谢谢
2 回答
倚天杖
TA贡献1828条经验 获得超3个赞
$stack = '';
这句把$stack定义为字符串了。后面的计算都按字符串类型运算。
字符串的话,$stack[0]就是$stack字符串的第一个字符,且长度只是一位,以此类推。
第一次循环: $tack = '1' //$stack[0]只是一个字符,所以不会有后面的'_';
重点是 $stack[n] 都只代表这个字符串的第几个字符。而且只是一个字符。只会取赋值的第一个字符。
$stack = [] 就正常了。
php7 和 php5 的一个区别就是变量类型更严格一些
- 2 回答
- 0 关注
- 733 浏览
添加回答
举报
0/150
提交
取消