skip to Main Content

How to remove comma at the end of an array?
Need output: 1,2,3,4,5 and not 1,2,3,4, 5,

I know I can use implode, but is there another way?

$massive = [1, 2, 3, 4, 5];
 
foreach($massive as $items){
echo $items. ', ';
}

2

Answers


  1. You can use implode and if don’t want to use the inbuilt function then use a new variable like this

    <?php
    $massive = [1, 2, 3, 4, 5];
    $str="";
     
    foreach($massive as $items){
        $str .= $items.",";
    }
    echo substr($str,0,-1)
    ?>
    
    Login or Signup to reply.
  2. This pattern shows up frequently. I thought I might offer a generic way to handle it.

    $arr = [100, 200, 300, 400, 500, 600];
    $out = null;
    foreach ( $arr as $a ) {
        // The trick is to output the comma before each element
        // except the first one.
        if ( ! empty($out) ) {
            $out .= ',';
        }
        $out .= $a;
    }
    // Now I can output the string
    

    What if I wanted to output the data as the loop progresses?
    Just set a boolean to false then after processing the first element, set it to true.

    $arr = [100, 200, 300, 400, 500, 600];
    $first = true;
    foreach ( $arr as $a ) {
        // The trick is to output the comma before each element
        // except the first one.
        if ( $first ) {
            echo ',';
            $first = false;
        }
        echo $a;
    }
    

    Is there another way? Yes.

    foreach ( $arr as $a ) {
        // see if it is the first element
        if ( $a == first($arr) ) {
            echo ',';
            $first = false;
        }
        echo $a;
    }
    

    Or we can detect the last item and just not output the comma.

    foreach ( $arr as $a ) {
        echo $a;
        if ( last($arr) != $a ) {
            echo ',';
        }
    }
    
    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search