2011-05-08 53 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