2011-06-03 120 views
0

的阵列循环时发生的事情我做了这个对象数组外循环迭代通过对象

$trailheads[] = new StdClass; 

然后我把一个物体在那里循环

$trailheads[] = $trailhead; 

每次然后我又回到了整个事情从这样的功能:

$ret->ok = empty($errors); 
$ret->errors = $errors; 
$ret->o = $trailheads; 

return $ret; 

一旦我得到的价值回来,并循环通过结果我在循环3次,而不是预期的2.是否有一个额外的迭代可能会发生的原因?

这里是我尝试循环:

foreach ($trailhead_list->o as $key) 
{ 
    $objkey = (object) $key; 
    echo '<p><h3>Trailhead Name: '.$objkey->trailhead_name.'</h3></p>'; 
    } 
+0

我想你还需要展示如何从什么数据创建trailheads []条目;和你得到什么输出。 – Lars 2011-06-03 21:23:05

回答

2

在此之后:

$trailheads[] = new StdClass; 

$trailheads数组包含元素,一个StdClass的一个实例。

然后你添加更多的元素,但会有第一个元素。

也许你想初始化这样的$trailheads[],但相反,你给了一个数组元素的值。用这个代替:

$trailheads = array(); 
+0

很好地工作 - 谢谢! – Genadinik 2011-06-03 21:29:21

0

在行:

$trailheads[] = new StdClass; 

您分配一个新的stdClass对象解决到$ trailheads阵列。也就是说,你并没有将它声明为一个变量,而是实际添加了一个元素。

1

此:

我提出这个对象阵列

$ trailheads [] =新一个StdClass;

...似乎是额外数组元素的来源。实例化一个数组空这样的:

$trailheads = array(); 

然后循环和添加对象:

$trailheads[] = $trailhead; 

另外一张纸条:我猜你没有启用的通知或警告。开发时打开它们。 $trailheads[] = new StdClass;这行会产生一个通知,因为你正在给一个未声明为数组的变量添加一个新元素(或其他任何东西)。 PHP的宽松打字非常宽容,但是这条线会产生一个通知。

当您开发时发出警告和通知,将其关闭以进行生产。它将帮助您避免常见的错误,并且会使您成为更好的程序员来启动。