如何轻松删除数组中的最后一个逗号?

时间:2010-09-24 05:01:41

标签: php arrays string

假设我有这个:

$array = array("john" => "doe", "foe" => "bar", "oh" => "yeah");

foreach($array as $i=>$k)
{
echo $i.'-'.$k.',';
}

回应"john-doe,foe-bar,oh-yeah,"

如何删除最后一个逗号?

10 个答案:

答案 0 :(得分:19)

或者,您可以将rtrim功能用作:

$result = '';
foreach($array as $i=>$k) {
    $result .= $i.'-'.$k.',';
}
$result = rtrim($result,',');
echo $result;

答案 1 :(得分:10)

我不喜欢以前的所有食谱。

Php不是C,并且有更高级别的方法来处理这个特定的问题。

我将从你有这样一个数组的那一点开始:

$array = array('john-doe', 'foe-bar', 'oh-yeah');

您可以使用循环或 array_map()函数从初始数组构建此类数组。请注意,我使用的是单引号字符串。如果您没有需要替换的变量名,那么这是一个微优化。

现在你需要从这个数组生成一个CSV字符串,它可以这样做:

echo implode(',', $array);

答案 2 :(得分:7)

一种方法是使用substr

$array = array("john" => "doe", "foe" => "bar", "oh" => "yeah");

$output = "";
foreach($array as $i=>$k)
{
    $output .= $i.'-'.$k.',';
}

$output = substr($output, 0, -1);

echo $output;

另一种方法是使用implode

$array = array("john" => "doe", "foe" => "bar", "oh" => "yeah");

$output = array();
foreach($array as $i=>$k)
{
    $output[] = $i.'-'.$k;
}

echo implode(',', $output);

答案 3 :(得分:3)

我不喜欢这种使用substr的想法,因为它是糟糕编程的风格。这个想法是连接所有元素,并通过特殊的“分离”短语将它们分开。为此调用子串的想法就像使用激光射击鸟类。

在我正在处理的项目中,我们试图摆脱编码中的坏习惯。这个样本被认为是其中之一。我们强迫程序员编写这样的代码:

$first = true;
$result = "";
foreach ($array as $i => $k) {
  if (!$first) $result .= ",";
  $first = false;
  $result .= $i.'-'.$k;
}
echo $result;

此代码的目的比使用substr的代码更清晰。或者你可以简单地使用 implode 函数(我们的项目是用Java编写的,所以我们必须设计自己的函数来连接字符串)。只有在真正需要时才应使用substr函数。这应该避免,因为这是编程风格不好的标志。

答案 4 :(得分:1)

我总是使用这种方法:

$result = '';
foreach($array as $i=>$k) {
    if(strlen($result) > 0) {
        $result .= ","
    }
    $result .= $i.'-'.$k;
}
echo $result;

答案 5 :(得分:1)

假设数组是索引,这对我有用。我循环$ i并测试$ i对$ key。当键结束时,逗号不会打印。请注意,IF有两个值,以确保第一个值在开头没有逗号。

foreach($array as $key => $value)
{
    $w = $key;
    //echo "<br>w: ".$w."<br>";// test text
    //echo "x: ".$x."<br>";// test text
    if($w == $x && $w != 0 )
    {
    echo ", ";
    }
    echo $value;
    $x++;
}

答案 6 :(得分:0)

在foreach条件之后尝试此代码,然后回显$ result1

$result1=substr($i, 0, -1);

答案 7 :(得分:0)

这样做:

rtrim ($string, ',')

答案 8 :(得分:0)

请参阅此示例,您可以轻松了解

$name = ["sumon","karim","akash"];
foreach($name as $key =>$value){
 echo $value;
 if($key<count($name){
     echo ",";
 }
}

答案 9 :(得分:0)

我已使用数组的最后一个键从aray的最后一个值中删除了逗号。希望这会给你想法。

   $last_key =  end(array_keys($myArray));
                           foreach ($myArray as $key => $value ) {
                              $product_cateogry_details="SELECT * FROM `product_cateogry` WHERE `admin_id`='$admin_id' AND `id` = '$value'";
                                  $product_cateogry_details_query=mysqli_query($con,$product_cateogry_details);
                                  $detail=mysqli_fetch_array($product_cateogry_details_query);

                                  if ($last_key == $key) {
                                    echo $detail['product_cateogry'];
                                  }else{
                                    echo $detail['product_cateogry']." , ";
                                  }

                          }