2011-05-08 90 views
0

以下運行循環的問題:PHP爆炸 - 通過每個數組項

我檢索我的數據庫中的以下數據串:

$row->exceptions = '1,2,3'; 

explode後,我需要下面的代碼來檢查的每一個爆炸碎片

$exceptions = explode(",", $row->exceptions); 

//result is 
//[0] => 1 
//[1] => 2 
//[2] => 3 

for ($i = 0; $i <= $row->frequency; $i++) { 

    if ($exceptions[] == $i) { 

     continue; 

    } else { 

     //do something else 
    } 
} 

我怎樣才能通過所有鍵$exceptions[]循環從爆炸陣列,因此評估是否==$i

感謝您的幫助。

+0

[查找數組中的值]的可能重複(http://stackoverflow.com/questions/4703004/find-value-in-array) – 2011-05-08 05:34:44

+0

不確定 - 在這裏我需要一個解決方案而不是找到一個特定的鍵,但要循環所有鍵 – pepe 2011-05-08 05:37:00

+1

我不知道我有你的問題,所以我發表評論:如果我得到它,它應該足以代替「if($ exceptions [] == $ i )「with」if(in_array($ i,$ exceptions))「。 – 2011-05-08 05:50:13

回答

2

應該足以替代:

if($exceptions[] == $i) 

有:

if(in_array($i,$exceptions)) 

順便說一句,它消除了對嵌套循環的需要。

1

啊,應該很簡單,不是嗎?

$exceptions = explode(",", $row->exceptions); 
for ($i = 0; $i <= $row->frequency; $i++) { 

    foreach($exceptions as $j){ 
    if($j == $i){ 
     // do something 
     break; 
    } 
} 
} 
+0

謝謝@femi - 'in_array'上面的工作很好 – pepe 2011-05-08 05:56:23

+0

很高興幫助:'in_array'更優雅。沒有理由不使用平臺功能,如果它們可用並適合任務。 – Femi 2011-05-08 05:58:28

0

我想我明白你在問什麼。以下是您將如何在該循環內測試密鑰是否等於$i

for ($i = 0; $i <= $row->frequency; $i++) 
{ 
    foreach ($exceptions as $key => $value) 
    { 
    if ($key == $i) 
    { 
     continue; 
    } 
    } 
} 
+0

非常感謝,感謝投球 – pepe 2011-05-08 05:57:13