【问题标题】:while loop with foreach带有foreach的while循环
【发布时间】:2015-06-16 17:40:21
【问题描述】:

这是我的 while 循环。

$getsongs = mysql_query("SELECT * FROM hth_songs WHERE album='$album'");
while($song = mysql_fetch_array($getsongs)){
?>
    { title:"<?php echo $song[title]; ?>" },

<?php } ?>

问题是我总是需要在我的回声末尾有一个“,”。但如果它是最后一项,我最后不想要“,”。

我已经查过了,我需要做这样的事情,但我不能让它工作,也不知道该怎么做。

$i = 0;
$len = count($array);
foreach ($array as $item) {
   if ($i == 0) {
    { title:"<?php echo $song[title]; ?>" }, // first
   } else if ($i == $len - 1) {
    { title:"<?php echo $song[title]; ?>" } // last
   }
    { title:"<?php echo $song[title]; ?>" }, // …
$i++;
}

(我在

任何帮助将不胜感激。

【问题讨论】:

  • 尝试在遍历 while 循环时创建一个字符串,然后在 while 循环之后使用 rtrim。这将摆脱结束逗号 (,) php.net/rtrim
  • @Kingfox 你会接受答案吗?

标签: php loops foreach while-loop


【解决方案1】:

您的代码中似乎遗漏了一个“else”:

$i = 0;
$len = count($array);
foreach ($array as $item) {
   if ($i == 0) {
    { title:"<?php echo $song[title]; ?>" }, // first
   } else if ($i == $len - 1) {
    { title:"<?php echo $song[title]; ?>" } // last
   }
   else
    { title:"<?php echo $song[title]; ?>" }, // …
$i++;
}

【讨论】:

    【解决方案2】:

    从数组中的值获取逗号分隔的字符串的最简单方法是使用 implode()。

    $array = array('lastname', 'email', 'phone');
    $comma_separated = implode(",", $array);
    
    echo $comma_separated; // lastname,email,phone
    

    注意没有尾随逗号,因为逗号是将值拼凑在一起的“粘合剂”。

    【讨论】:

      【解决方案3】:

      你的头衔似乎太多了。试试这个:

      $i = 0;
      $len = count($array);
      foreach ($array as $item) {
         $i++;
         if ($i == $len) {
            { title:"<?php echo $song[title]; ?>" } // last
         } else {
            { title:"<?php echo $song[title]; ?>" }, // others
         }     
      }
      

      【讨论】:

      • 那么我要这样制作我的数组吗? $array = mysql_fetch_array(mysql_query("SELECT * FROM hth_songs WHERE album='$album'"));
      • 我不知道,那是另一个问题。我刚刚看到了 while-appending 问题,这在每种语言中都是一样的(当您不使用 @FatAdama 提供的特殊功能时)。
      【解决方案4】:

      您的代码没有意义,$song 设置在哪里?以及为什么 if 块内有额外的花括号?

      假设你可以适应你的情况:

      $string = '';
      foreach ($array as $item) {
          $string .= $item['song'] . ',';
      }
      echo rtrim($string, ',');
      

      【讨论】:

      • $song 仅在我的 while 循环中设置,因为我不知道如何设置它以在 foreach 循环中检索 $song 数据。
      猜你喜欢
      • 2017-03-13
      • 2013-08-31
      • 2012-07-01
      • 2020-08-23
      • 2013-10-01
      • 1970-01-01
      • 2016-03-14
      • 2015-07-03
      • 2023-04-09
      相关资源
      最近更新 更多