1

アプリケーションの別のレイヤーで使用されるテキスト行を作成しています。行は次のとおりです。

['Jun 13',529],

['Jul 13',550],

['Aug 13',1005],

['Sep 13',1021],

['Oct 13',1027],

テキストの最後の行から末尾のコンマを削除する最も速くて簡単な方法は何ですか?

私はこのようなものを期待しています:

['Jun 13',529],

['Jul 13',550],

['Aug 13',1005],

['Sep 13',1021],

['Oct 13',1027]

実際のコード:

$i = 0;
while($graph_data = $con->db_fetch_array($graph_data_rs))
{
    $year = $graph_data['year'];
    $month = $graph_data['month'];
    $count = $graph_data['count'];
    $total_count = $graph_data['total_count'];

    // for get last 2 digits of year
    $shortYear = substr($year, -2, 2);

    // for get month name in Jan,Feb format
    $timestamp = mktime(0, 0, 0, $month, 1);
    $monthName = date('M', $timestamp );
    
    $data1 = "['".$monthName.' '.$shortYear."',".$total_count."],";

    $i++;
}
4

5 に答える 5

1
<?php
$arr = array(
    "['Jun 13',529],",
    "['Jul 13',550],"
);
$arr[] = rtrim(array_pop($arr), ', \t\n\r');
print_r($arr);

// output:

// Array
// (
//     [0] => ['Jun 13',529],
//     [1] => ['Jul 13',550]
// )
于 2013-10-14T13:01:25.007 に答える
0

@ElonThanは正しかったし、 @BenFortune正しかった。これはXY 問題であり、他のどの回答からも最良のアドバイスは得られません。 「独自の json 文字列を手動で作成しないでください」

テキスト出力から最後のコンマを削除して、javascript がインデックス付き配列のインデックス付き配列として解析できるものを作成するだけでよいと思います。

あなたがすべきことは、多次元配列を作成し、そのデータをjson文字列に変換することです。PHP には、まさにこれを行うネイティブ関数があり、有効な json 文字列が得られることが保証されます (必要に応じて文字をエスケープするため)。

while()ループに基づいてスクリプトを調整する方法を示します。

$result = [];
while ($row = $con->db_fetch_array($graph_data_rs)) {
    $result[] = [
        date('M y', strtotime($row['year'] . '-' . $row['month'])),
        $row['total_count']
    ];
}
echo json_encode($result, JSON_PRETTY_PRINT);

これは、クエリの結果セットを入力配列として再作成し、ループと結果の生成を複製するオンライン デモです。 https://3v4l.org/cG66l

あとは、必要に応じて、レンダリングされた html ドキュメントの JavaScript にその文字列をエコーするだけです。

于 2021-07-11T12:36:31.020 に答える
0

@srain に似ていますが、array_push.

$values = array("['Oct 13',1027],", "['Oct 13',1027],");

$last = array_pop($values); //pop last element
array_push( $values, rtrim($last, ',') ); //push it by removing comma

var_dump($values);

//output
/*

array
  0 => string '['Oct 13',1027],' (length=16)
  1 => string '['Oct 13',1027]' (length=15)

*/
于 2013-10-14T13:36:23.077 に答える