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 )

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

有人可以建议我如何做到这一点,我认为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为每个循环设置一个项目数组。对单项数组执行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 回答