【问题标题】:for each loop after QueryFetchArrayAll对于 QueryFetchArrayAll 之后的每个循环
【发布时间】:2015-07-28 14:37:44
【问题描述】:

我有一个问题:我使用以下查询从数据库中获取我的数组:

$news = $db->QueryFetchArrayAll("SELECT login,id FROM `users` ORDER BY id DESC LIMIT 9");

$imgs = $db->QueryFetchArrayAll("SELECT usrpic,id FROM `users` ORDER BY id DESC LIMIT 9");

现在每个循环我都需要$news['login']$imgs['usrpic']

例如:

foreach($news as $new, $imgs as $img){
    <img style="border: 1px solid #8C0E0E;"src="'.$img['usrpic'].'" width="20" height="20" border="0" />
    <img style="border: 1px solid #8C0E0E;"src="'.$new['login'].'" width="20" height="20" border="0" />
}

谁能帮助我如何做到这一点?

【问题讨论】:

    标签: php for-loop foreach parallel-foreach


    【解决方案1】:

    如果这些是您的实际查询,您应该将它们合并为一个:

    $users = $db->QueryFetchArrayAll("SELECT id, login, usrpic FROM `users` ORDER BY id DESC LIMIT 9");
    

    然后迭代结果数组并输出图片:

    foreach ($users as $user) {
        echo "<img src='{$user['usrpic']}' ... />";
        echo "<img src='{$user['login']}' ... />";
    }
    

    否则(保留您的原始查询),您应该确保 $news$imgs 具有相同的长度,然后迭代其中一个:

    $size = count($imgs);
    for ($i = 0; $i < $size; $i++) {
        $img = $imgs[$i];
        $new = $news[$i];
        echo "<img src='{$img['usrpic']}' ... />";
        echo "<img src='{$new['login']}' ... />";
    }
    

    【讨论】:

      【解决方案2】:

      你可以使用next()函数:http://php.net/manual/en/function.next.php
      但不要忘记确保 news 和 img 大小相同:

      if(count($news) == count($imgs)) {
          foreach($news as $new) {
              $img = next($imgs);
              <img style="border: 1px solid #8C0E0E;"src="'.$img['usrpic'].'" width="20" height="20" border="0" />
              <img style="border: 1px solid #8C0E0E;"src="'.$new['login'].'" width="20" height="20" border="0" />
          }
      }
      

      【讨论】:

        猜你喜欢
        • 2013-11-22
        • 2020-05-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-04-06
        • 2014-05-04
        • 2019-01-24
        • 1970-01-01
        相关资源
        最近更新 更多