php foreach复制第一项

时间:2017-03-21 14:16:25

标签: php object foreach duplicates

对于从数组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个项目

1 个答案:

答案 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);