2016-09-16 20 views
1

我有存儲在一個名爲$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, ], 

但最後一項記錄後我不想擁有逗號和空間。我怎樣才能做到這一點?

回答

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); 
+0

確實使用json_encode是一種更好的方法。感謝您的時間和您的幫助! – Alan

5

只需使用implodearray_column

$prepared_array = array_column($data, 1); 

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

謝謝你的時間。這個解決方案工作,但在我的情況下,我應該也使用json_encode。非常感謝您的寶貴時間! – Alan

+0

我不確定那是否正確,但是我的代碼給了你相同的結果。最後添加*** json_encode ***沒有問題。我的解決方案可以讓你擺脫** foreach語句** – Dmytrechko

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 ' , '; 
    } 
    } 
} 
?> 
0

您也可以嘗試這種低技術含量的解決方案:

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

基本上你正在做的是設置在前面的字符串分隔符。它一開始是空的,所以不會有分隔符,但是在第一次迭代之後它將被填充,將分隔符放在所有將來的字符串之前。而且,因爲它剛剛開始,所以在最後一次之後沒有什麼可追蹤的。

也許不是最好的解決方案,但肯定很容易理解。