1

のさまざまな順列を試しarray_unique、ここで配列から重複する値を削除することに関する他の一般的な質問を検索しましたが、必要な答えを完全に設定することはできません。日付と値の配列が渡されており、DATE 値を日付ごとに 1 回だけ表示したい。

私はこれを Google チャートに使用しており、日付ラベルを日付ごとに 1 回だけ表示したいと考えています。グラフにプロットできるようにしたいので、完全に削除したくありません。

したがって、渡される配列の例:

["June 4",30],["June 4",35],["June 5",46],["June 5",38.33],["June 5",12]  

そして、私がそれをどのように望んでいるか:

["June 4",30],["",35],["June 5",46],["",38.33],["",12] 

アイデア?

4

2 に答える 2

0

データを使用して Google チャートにフィードしているので、出力データに関して必要なものを正確に知っていると思います。データを構造化するためのより良い方法については、既にいくつかの提案がありますが、それはおそらく Google チャートでは直接機能しません。

これはどう?

$data = [["June 4",30],["June 4",35],["June 5",46],["June 5",38.33],["June 5",12]];
$found = array();
foreach ($data as $i => $x) {
    if (in_array($x[0], $found)) {
        $data[$i][0] = '';
    } else {
        $found[] = $x[0];
    }
}
print_r($data);

基本的には、すでに見た日付のリストを作成しているだけです。データをループして、日付が表示されているかどうかを確認します...表示されている場合は、データから消去します。そうでない場合は、リストに保存して、次回に消去されるようにします。

すべての重複を削除する最初のソリューションとは異なり、連続する重複日付のみをチェックする代替ソリューションを次に示します。これはおそらく、チャート作成に必要なものに近いものです。

$data = [["June 4",30],["June 4",35],["June 5",46],["June 5",38.33],["June 5",12]];
$last = '';
foreach ($data as $i => $x) {
    if ($x[0] == $last) {
        $data[$i][0] = '';
    } else {
        $last = $x[0];
    }
}
print_r($data);

この場合、最後に確認した日付を追跡しているだけです...新しい日付がそれに一致する場合は、それをクリアします。

于 2013-06-05T05:51:56.697 に答える