2014-11-25 53 views
-4

我需要用「for」替換我的「foreach」,但實際上我不知道如何。 這裏是我的PHP代碼的一部分:在PHP中用「for」替換「foreach」

$r = ""; 
$j = 0; 
foreach ($orgs as $k => $v) { 
    echo "\n\r" . $v->id . "\n\r"; 
    if (1) { 
     $a_view_modl = ArticleView :: model($v->id, $v->id); 
     $connection = $a_view_modl->getDbConnection(); 

謝謝!

+2

你需要什麼? – 2014-11-25 12:45:07

+1

爲什麼這需要成爲for循環?你仍然可以在foreach循環的每次迭代中遞增變量 – andrew 2014-11-25 12:45:44

+0

[How'foreach'actually works]的可能重複(http://stackoverflow.com/questions/10057671/how-foreach-actually-works) – 2014-11-25 12:46:03

回答

2
$r = ""; 
$j = 0; 
foreach ($orgs as $k => $v) { 
    echo "\n\r" . $v->id . "\n\r"; 
    if (1) { //you don't really need this, because it's allways true 
     $a_view_modl = ArticleView :: model($v->id, $v->id); 
     $connection = $a_view_modl->getDbConnection(); 

如果$orgs是一個關聯數組開始更換$v重寫代碼,就變成:

$r = ""; 
$j = 0; 
for($i = 0; $i < count($orgs); $i++) 
{ 
    echo "\n\r" . $orgs[$i]->id . "\n\r"; 
    $a_view_modl = ArticleView :: model($orgs[$i]->id, $orgs[$i]->id); 
    $connection = $a_view_modl->getDbConnection(); 
} 

更好的是你先做一些檢查,如果你去這個解決方案。

如果實現與foreach這是在這種情況下,更可讀的解決方案,你可以增加或減少給定的變量,像正常的:

$i++; //if you want the increment afterwards 
++$i; //if you want the increment before you read your variable 

同爲遞減:

$i--; //decrement after reading the variable 
--$i; //decrement before you read the variable 
+1

讓我們只希望$ orgs不是關聯數組 – andrew 2014-11-25 12:49:07

+0

@andrew,我完全同意你的看法。但既然他想要一個for循環,我以爲他應該知道他想做什麼;) – 2014-11-25 12:50:56

+0

以下編輯,一個很好的答案 – andrew 2014-11-25 12:57:51

0

A foreach循環只是一個更好的可讀for循環。它接受一個數組並將當前密鑰(在本例中爲索引)存儲到$k中,並將值存儲到$v中。 然後$v具有您在代碼片段中使用的值。
for循環只接受索引數組,並且不包含關聯數組。

我們可以通過用$orgs[ index ],其中索引從0

$r = ""; 
$j = 0; 

for ($i = 0; $i < count($orgs); $i++) { 
    echo "\n\r" . $orgs[$i]->id . "\n\r"; 
    if (1) { 
     $a_view_modl = ArticleView::model($orgs[$i]->id, $orgs[$i]->id); 
     $connection = $a_view_modl->getDbConnection(); 
0
$r = ""; 
$j = 0; 
for($i = 0 ; $i < count($orgs); $i++) 
{ 
    $v = $orgs[$i]; 
    echo "\n\r" . $v->id . "\n\r"; 
    if (1) { 
     $a_view_modl = ArticleView :: model($v->id, $v->id); 
     $connection = $a_view_modl->getDbConnection(); 
} 
0
foreach ($orgs as $k => $v) { 
    // Your stuff 
} 

for loop

for ($i = 0; $i < count($orgs); $i++) { 
    // Your stuff ... use $orgs[$i]; 
}