如何避免在最后一行添加逗号?

时间:2014-02-19 01:40:49

标签: php mysql

我使用以下代码在每个文件名的末尾添加逗号,。在此之后使用explode我将行放在数组上。

如果我回应它的图像数组,它显示a.jpg,b.jpg,c.jpg,(请注意c.jpg末尾的最后一个逗号)

如何避免在最后找到的行中添加逗号?

<?php       
 while($image = mysql_fetch_array($images)) { 
 $images_path .= $image['FILE_NAME'].',';
}

$images_array = explode(",", $images_path);
?>

5 个答案:

答案 0 :(得分:4)

通过提供逗号作为character mask

的第二个参数来利用rtrim()
$images_path = rtrim($images_path,","); //<---- The added code
$images_array = explode(",", $images_path);

答案 1 :(得分:3)

为什么要将它添加到字符串然后将其转换为数组,如果可以立即添加它?

$images_array = array();
while($image = mysql_fetch_array($images)) { 
    $images_array[] = $image['FILE_NAME'];
}

答案 2 :(得分:1)

你这样做:

  1. 创建所需的字符串
  2. 明知地引入了一个容易避免的问题
  3. 使用更多代码修复您创建的问题(通过拆分字符串生成所需的数组)
  4. 相反,这样做:

    1. 根据需要创建所需的数组,第一次
    2. 当您的编码风格改进时,您当前的方法会产生更多问题,并且您有更复杂的代码并且正在重用您的代码(即这将在一个类中)。

      像这样:

      <?php       
       while($image = mysql_fetch_array($images))
        {
          $images_array[] = $image['FILE_NAME'];
        }
      ?>
      

      而不是,你当前是怎么做的,用数据库中的数据设置variable,用逗号分隔每个值(结果是最后一个的胭脂),然后将变量爆炸成一个数组,并希望删除结束逗号..

      首先设置数组!

答案 3 :(得分:0)

您提供的代码最简单的方法是

explode(',', $images_path, -1);

在大多数情况下,如果你真的需要一个以这种方式构建的字符串,你可能会重新考虑。

答案 4 :(得分:0)

有很多方法可以解决这个问题,有些方法可以解决,有些则不是。

理想情况下,这就是您在生产代码中使用像Apache / Google commons这样的库的原因,因此有一些标准方法可以执行implode / explode;分裂/加入;或者用你所使用的语言称呼它。

话虽如此,也许您正在编写基本代码或将其作为库提供,或者只是想知道如何处理它。

我不关心修剪选项,它们具有破坏性,你会发现自己有一天当你依赖于那种性质的东西,盯着代码审查或调试问题并思考,哦,这个修剪,子串正在做出假设和弄乱事情,这在基础/共享代码中是不好的。

我会以更确定的方式处理这个问题:

(pseudocode)
<?php       
$images_path = "";

// Base case
if($image = mysql_fetch_array($images)) {
  $images_path .= $image['FILE_NAME'];
}

// If multiple results, iterate
while($image = mysql_fetch_array($images)) { 
  $images_path .= ',' . $image['FILE_NAME'];
}

$images_array = explode(",", $images_path);
?>

将其切换为附加,以便在有多个时添加逗号。现在你永远不必删除额外的逗号或执行任何破坏性命令。非常类似于如何做一个证明你构建基础案例然后在基础上构建。