我使用以下代码在每个文件名的末尾添加逗号,
。在此之后使用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);
?>
答案 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)
你这样做:
相反,这样做:
当您的编码风格改进时,您当前的方法会产生更多问题,并且您有更复杂的代码并且正在重用您的代码(即这将在一个类中)。
像这样:
<?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);
?>
将其切换为附加,以便在有多个时添加逗号。现在你永远不必删除额外的逗号或执行任何破坏性命令。非常类似于如何做一个证明你构建基础案例然后在基础上构建。