试图获得独特的价值观

时间:2013-01-21 22:50:27

标签: php

我有以下代码

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 )

我想做的是获得独特的价值,在这种情况下,冬季 - 2010年,2011年春季,2011年夏季。

有人可以告诉我如何做到这一点,我认为array_unique可能是解决方案,但我猜它是数值存储在数组中的方式吗?

2 个答案:

答案 0 :(得分:2)

为什么不将值添加到在循环范围之外定义的数组?

$array = array();

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

$array = array_unique($array);

答案 1 :(得分:1)

问题是您将$input设置为每个循环的一个项目数组。在一个项目数组上执行array_unique将返回您开始使用的相同数组。

您需要在循环中构建一个数组,然后在循环外部执行array_unique。像这样:

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