0

私は次のコードを持っています

foreach($reportsResult->getRecords() as $key => $reportRecord){
    $input = array($reportRecord->getField('Term').' - '.$reportRecord->getField('Year'));
    $result = array_unique($input);
    print_r($result);
}

次のような出力を生成しています

Array ( [0] => Winter - 2010 )
Array ( [0] => Winter - 2010 )
Array ( [0] => Winter - 2010 )
Array ( [0] => Winter - 2010 )
Array ( [0] => Winter - 2010 )
Array ( [0] => Winter - 2010 )
Array ( [0] => Winter - 2010 )
Array ( [0] => Winter - 2010 )
Array ( [0] => Winter - 2010 )
Array ( [0] => Spring - 2011 )
Array ( [0] => Spring - 2011 )
Array ( [0] => Spring - 2011 )
Array ( [0] => Spring - 2011 )
Array ( [0] => Spring - 2011 )
Array ( [0] => Spring - 2011 )
Array ( [0] => Spring - 2011 )
Array ( [0] => Spring - 2011 )
Array ( [0] => Spring - 2011 )
Array ( [0] => Summer - 2011 )
Array ( [0] => Summer - 2011 )
Array ( [0] => Summer - 2011 )
Array ( [0] => Summer - 2011 )
Array ( [0] => Summer - 2011 )
Array ( [0] => Summer - 2011 )
Array ( [0] => Summer - 2011 )

私がやりたいのは、一意の値を取得することです。この場合は、Winter-2010、Spring 2011、Summer2011です。

誰かがこれを行う方法を教えてもらえますか、私array_uniqueは解決策かもしれないと思いましたが、値が配列に格納される方法だと思いますか?

4

2 に答える 2

2

ループのスコープ外で定義された配列に値を追加してみませんか?

$array = array();

foreach($reportsResult->getRecords() as $key => $reportRecord){
    $array[] = $reportRecord->getField('Term').' - '.$reportRecord->getField('Year');
}

$array = array_unique($array);
于 2013-01-21T22:53:59.903 に答える
1

問題は、$inputループごとに1つのアイテム配列に設定していることです。1つのアイテムの配列に対してを実行すると、最初にarray_unique使用したのと同じ配列が返されます。

ループ内で配列を作成してから、ループ外で実行する必要がありarray_uniqueます。このようなもの:

$input = array()
foreach($reportsResult->getRecords() as $key=>$reportRecord){
    $input[] = $reportRecord->getField('Term').' - '.$reportRecord->getField('Year');
}
$result = array_unique($input);
于 2013-01-21T22:54:54.233 に答える