2011-06-03 115 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的寬鬆打字非常寬容,但是這條線會產生一個通知。

當您開發時發出警告和通知,將其關閉以進行生產。它將幫助您避免常見的錯誤,並且會使您成爲更好的程序員來啓動。