我制作了这个对象数组
$trailheads[] = new StdClass;
然后每次循环时我都会在其中放置一个物体
$trailheads[] = $trailhead;
然后我从这个函数返回了整个东西:
$ret->ok = empty($errors);
$ret->errors = $errors;
$ret->o = $trailheads;
return $ret;
一旦我得到了值,并在trailheads []中循环结果,我继续循环3次而不是预期的2.是否有理由进行额外的迭代?
以下是我尝试循环的方法:
foreach ($trailhead_list->o as $key)
{
$objkey = (object) $key;
echo '<p><h3>Trailhead Name: '.$objkey->trailhead_name.'</h3></p>';
}
答案 0 :(得分:2)
之后:
$trailheads[] = new StdClass;
你的$trailheads
数组包含on元素,一个StdClass的实例。
然后你添加更多元素,但会有第一个元素。
也许您想要像这样初始化$trailheads[]
,但是您为其中一个数组元素赋予了价值。请改用:
$trailheads = array();
答案 1 :(得分:1)
此:
我制作了这个对象数组
$ trailheads [] = new StdClass;
...似乎是额外数组元素的来源。像这样实例化一个空数组:
$trailheads = array();
然后循环并添加对象:
$trailheads[] = $trailhead;
另请注意:我猜您没有启用通知或警告。在你发育的时候打开它们。行$trailheads[] = new StdClass;
会生成一个通知,因为您要向尚未声明为数组(或其他任何内容)的变量添加新元素。 PHP的宽松打字是非常宽容的,但是这一行会产生一个通知。
开发时的警告和注意事项,请将其关闭以进行生产。它将帮助您避免常见的错误,它将使您成为更好的程序员来启动。
答案 2 :(得分:0)
在行中:
$trailheads[] = new StdClass;
您正在将新的StdClass对象分配到$ trailheads数组中。也就是说,您并未将其声明为变量,而是实际添加元素。