鍍金池/ 問答/PHP  C/ 關(guān)于php7中foreach與php5輸出值不同的問題

關(guān)于php7中foreach與php5輸出值不同的問題

在寫代碼的時候遇見一個和詭異的問題


$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"
}

這是為什么呢

網(wǎng)上的樣例沒有說明為什么,求大佬解答,謝謝

回答
編輯回答
淺淺

$stack = '';
這句把$stack定義為字符串了。后面的計算都按字符串類型運算。
字符串的話,$stack[0]就是$stack字符串的第一個字符,且長度只是一位,以此類推。
第一次循環(huán): $tack = '1' //$stack[0]只是一個字符,所以不會有后面的'_';

重點是 $stack[n] 都只代表這個字符串的第幾個字符。而且只是一個字符。只會取賦值的第一個字符。

$stack = [] 就正常了。
php7 和 php5 的一個區(qū)別就是變量類型更嚴(yán)格一些

2018年3月31日 22:03
編輯回答
舊時光

沒有復(fù)現(xiàn)。。

var_dump(PHP_VERSION,$stack);

clipboard.png

clipboard.png

可能是php7.1的新特性

clipboard.png

2017年6月4日 16:06