这并不是一个惊喜,因为函数的实现有时会从一个版本到另一个版本有所变化,但是从来没有像这样...看:
$array = ["abc","def"];
$object = new stdclass();
foreach($array as $index => $value) {
$object->$index = $value;
}
var_dump(get_object_vars($object));
对于5.6.x版本,以及例如7.0.17和7.1.3版本,我们得到以下结果:
array(2) {
[0]=> string(3) "abc"
[1]=> string(3) "def"
}
但是对于7.0.0、7.0.16和7.1.0,我们得到:
array(2) {
["0"]=> string(3) "abc"
["1"]=> string(3) "def"
}
看到了吗?这些键可以是整数或字符串,具体取决于版本。
为什么会这样呢?这些变化背后的原因是什么?为什么没有在任何地方记录这些变化?或者...其实已经记录了?