【问题标题】:PHP explode - running loop through each array itemPHP爆炸 - 通过每个数组项运行循环
【发布时间】:2011-08-21 00:19:48
【问题描述】:

问题来了:

我从我的数据库中检索以下数据字符串:

$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 是否存在?

感谢您的帮助。

【问题讨论】:

  • Find Value in Array的可能重复
  • 不确定 - 我需要一个解决方案,不是找到特定的键,而是遍历所有键
  • 我不确定我有没有收到你的问题,所以我发表了评论:如果我收到了,将 "if($exceptions[] == $i)" 替换为"if(in_array($i,$exceptions))".
  • @paolo,这是一个优雅的解决方案,而且效果很好 - 您介意将其发布为答案吗? - 谢谢

标签: php loops explode


【解决方案1】:

替换就足够了:

if($exceptions[] == $i)

与:

if(in_array($i,$exceptions))

顺便说一句,它消除了对嵌套循环的需要。

【讨论】:

    【解决方案2】:

    啊,应该直截了当吧?

    $exceptions = explode(",", $row->exceptions);
    for ($i = 0; $i <= $row->frequency; $i++) {
    
        foreach($exceptions as $j){
        if($j == $i){
            // do something
            break;
        }
    }
    }
    

    【讨论】:

    • 很高兴为您提供帮助:in_array 更优雅。如果平台功能可用且适合任务,则没有理由不使用它们。
    【解决方案3】:

    我想我明白你在问什么。以下是在该循环中测试密钥是否等于 $i 的方法。

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

    【讨论】:

      猜你喜欢
      • 2015-05-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多