对于从数组foreach循环创建的对象,请经过两次第一项
$list = (object)['a' => 1, 'b' => 2];
echo json_encode($list);
$pointers = [];
foreach($list as $n => $v)
$pointers[] = &$list->$n;
var_dump($pointers);
json返回2项,end的指针返回3项。什么可能是错的?
但是如果我将对象创建为stdClass,它将按预期工作。
$list = new stdClass();
$list->a = 1;
$list->b = 2;
echo json_encode($list);
$pointers = [];
foreach($list as $n => $v)
$pointers[] = &$list->$n;
var_dump($pointers);
json返回2个项目,指针返回2个项目
答案 0 :(得分:3)
它似乎与PHP 7.0一样奇怪,因为它在7.1和< 7中的预期工作。 7。
你可能不得不做这样的事情:
$list = (object)['a' => 1, 'b' => 2];
echo json_encode($list);
$pointers = [];
$items = get_object_vars($list);
foreach($items as $key => $val){
$pointers[] = &$list->$key;
}
var_dump($pointers);