2011-08-03 112 views
2

我對PHP仍然很陌生,從所有的例子中,他們似乎都使用foreach語句。foreach()的替代方法PHP?

例如

foreach ($variable as $row) 

不過,我不認爲我應該用這一切的時候,例如變量或對象我有一個只在一個數組一行或實例。

我知道它有利於將它們用於多行,如果您使用for循環可能會漏掉它們。

但我真的需要使用它只是回聲一個數組中的變量?

例如例如這個變量$統計

array(3) { ["user_interventions"]=> int(4) ["fastest_intervention"]=> array(1) { [0]=> object(stdClass)#22 (1) { ["duration"]=> string(8) "02:10:00" } } ["slowest_intervention"]=> array(1) { [0]=> object(stdClass)#23 (1) { ["duration"]=> string(8) "02:26:00" } } } 

感謝

+0

like ... $ stats [「user_interventions」]? – Fosco

+0

我從來沒見過有人故意使用foreach循環從已知結構變量中只打印一個值。我認爲你的問題的前提是不正確的。你不需要使用循環,只需'echo $ array ['keyname']','echo $ object-> propertyname'等等。 –

+0

但有時如果我不使用一個foreach它說「試圖獲得非對象的屬性」,但如果我使用foreach循環它修復了這個['0']在結尾處的意思是什麼 – sqlmole

回答

1

不,你不需要使用每次需要訪問數組值時,循環使用foreach循環。你的例子可以用下面的方式...

echo $stats['fastest_intervention']['0']->duration; // Outputs: 02:10:00 

這是你的變量轉儲與縮進(使其更容易閱讀)。

array(3) { 
    ["user_interventions"]=> int(4) 
    ["fastest_intervention"]=> array(1) { 
     [0]=> object(stdClass)#22 (1) { 
      ["duration"]=> string(8) "02:10:00" 
     } 
    } 
    ["slowest_intervention"]=> array(1) { 
     [0]=> object(stdClass)#23 (1) { 
      ["duration"]=> string(8) "02:26:00" 
     } 
    } 
} 
+0

?是它在陣列中的位置?數組標識符是什麼 – sqlmole

+0

數組以鍵和值的組合來表示。 'durations'是嵌套對象'0'的一個屬性,'0'是分配給嵌套在'highest_intervention'數組內的對象的鍵。 – 65Fbef05

+0

這與C++中的數組是相同的,它只是略有不同。 – sqlmole

4

,如果你知道你的數組中的值的「地址」,那麼就沒有必要爲一個循環:

echo $arr['user_interventions'][0]['duration']; // 02:10:00 

更多細節here

0

您只需使用[]訪問變量。 print $array['key']

1

你不必在這裏使用foreach但你不能隨便print $array

如果數組的索引,你可以打印出類似這樣:

print 'Key is '.$array['key'].' but index is only'.$array['index'];