2016-09-16 7 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個のエントリから値を取得し、カンマとスペースを追加しよう:

[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, ], 

しかし、最後のエントリの後:

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

結果は次のようになります私はカンマとスペースを持っていたくない。これどうやってするの?

答えて

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

基本的にあなたがやっていることは、文字列の前に区切り文字を設定しています。最初は空ですが、デリミタはありませんが、最初の反復後に区切り文字がすべての文字列の前に置かれます。また、それは最初であるため、最後のものの後ろには何もありません。

おそらく最適な解決策ではありませんが、確かに簡単で分かりやすいものです。

関連する問題