【问题标题】:Nested foreach Loop Execution?嵌套foreach循环执行?
【发布时间】:2014-09-12 04:57:28
【问题描述】:

我在执行嵌套 foreach 循环以获得所需结果时遇到问题。下面是场景:

以下是两个数组的结果

结果1:

Array ( [0]=> Array ( [questionID] => 103 [answer] => Female [answer_cnt] => 8 ) 
       [1] => Array ( [questionID] => 103 [answer] => Male [answer_cnt] => 9 )
      ) 

结果2

Array ( [0] => Male [1] => Female )

我使用 foreach 循环的代码如下

 foreach($qrs as $qrow)

        {       foreach($d as $q){

                    echo"<br>".$q;                                                              
                  echo $qrow['answer_cnt']."<br>";}
        }

它会得到输出:

Male 8

Female8

Male 9

Female9

但我的预期输出是

 Female 8

 Male 9

【问题讨论】:

  • 你为什么会这样?这不是你在做什么。

标签: php mysql arrays codeigniter


【解决方案1】:

您不需要循环播放第二个。只需使用第一个。

foreach($qrs as $qrow) {
    echo $qrow['answer'] . ' ' . $qrow['answer_cnt'] . '<br/>';
}

不清楚为什么你需要第二个数组,但如果你想包含它(这没有意义),只需包含一个 if。

foreach($qrs as $qrow) {
    foreach($d as $q) {
        if($qrow['answer'] == $q) {
            echo $qrow['answer'] . ' ' . $qrow['answer_cnt'] . '<br/>';
        }
    }
}

【讨论】:

  • ghost!请给你以前的答案,这对我有帮助!
  • @NikhilMusale 之前的答案是什么意思?我没有修改
  • @NikhilMusale 很高兴它如你所愿
【解决方案2】:

你的第二个数组没用。做吧:

foreach($qrs as $qrow)
    {      
              echo"<br>".$qrow['answer']." ";                                                              
              echo $qrow['answer_cnt']."<br>";}
    }

【讨论】:

    【解决方案3】:

    使用这个...

     foreach($qrs as $qrow)
            {   
                foreach($d as $q)
                {
                    if(in_array($q, $qrow))
                    {
                        echo"<br>".$q;                                                              
                        echo $qrow['answer_cnt']."<br>";    
                    }
                }
            }
    

    【讨论】:

      【解决方案4】:
      $arr = array(
          array( 'questionID' => 103, 'answer' => 'Female',  'answer_cnt' => 8),
          array( 'questionID' => 103, 'answer' => 'Male',  'answer_cnt' => 9)
      );
      
      if(count($arr) > 0) {
          foreach($arr as $val) {
              echo "$val[answer] $val[answer_cnt] <br />";
          }
      }
      

      你也可以试试这个。

      【讨论】:

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