在最后一个结果处停止逗号分隔

时间:2016-09-16 06:44:09

标签: php arrays

我有一个存储在名为$data的变量中的数组,如下所示:

["data"]=>
    ["rows"]=>
    array(30) {
      [0]=>
      array(2) {
        [0]=>
        string(10) "2016-08-15"
        [1]=>
        int(3)
      }
      [1]=>
      array(2) {
        [0]=>
        string(10) "2016-08-16"
        [1]=>
        int(18)
      }
      [2]=>
      array(2) {
        [0]=>
        string(10) "2016-08-17"
        [1]=>
        int(5)
      }
      [3]=>
      array(2) {
        [0]=>
        string(10) "2016-08-18"
        [1]=>
        int(3)
      }
      [4]=>
      array(2) {
        [0]=>
        string(10) "2016-08-19"
        [1]=>
        int(11)
      }
      [5]=>
      array(2) {
        [0]=>
        string(10) "2016-08-20"
        [1]=>
        int(5)
      }

我尝试从30个条目中获取值并添加逗号和空格:

                    <?php
                    foreach ($data->data->rows as $data) {
                        if (isset($data[1])) {
                            echo $data[1] . ', ';
                        }
                    }
                    ?>

结果如下:

[18, 5, 3, 11, 5, 7, 9, 7, 17, 6, 3, 3, 1, 19, 13, 7, 3, 4, 10, 3, 5, 5, 7, 4, 2, 1, 8, 10, 6, 9, ],

但在最后一次参赛后,我不想要一个逗号和空格。我怎么能这样做?

4 个答案:

答案 0 :(得分:5)

我建议你这个解决方案:

$values = [];
foreach ($data->data->rows as $data) {
    if (isset($data[1])) {
        $values[] = $data[1];
    }
}
echo implode(',', $values);

此外,如果你想获得json字符串 - 更好地使用json_encode

echo json_encode($values);

答案 1 :(得分:5)

只需使用implodearray_column

$prepared_array = array_column($data, 1);

$result = array_implode(', ',$prepared_array);

答案 2 :(得分:0)

Yes you can use it using implode as well as you own logic..
<?php
 foreach ($data->data->rows as $key => $data) {
  if (isset($data[1])) {
    echo $data[1];
    if($key === count($data->data->rows) -1){
      echo ' , ';
    }
  }
 }
?>

答案 3 :(得分:0)

您也可以尝试这种低技术解决方案:

<?php
    $sep = "";
    foreach ($data->data->rows as $data) {
        if (isset($data[1])) {
            echo $sep . $data[1];
            $sep = ', ';
        }
    }
?>

基本上你正在做的是在字符串前面设置分隔符。它一开始是空的,所以没有分隔符,但是在第一次迭代之后它将被填充,将分隔符放在所有未来字符串的前面。另外,因为它在开头,所以在最后一个之后没有任何东西可以追踪。

也许不是最好的解决方案,但肯定容易理解。

相关问题