我有一些代碼,我已經試過修改,以使陣列按字母順序排序,我認爲以下幾點:添加字母排序
public function getOptions(array $aggs, $filterEmptyOptions = true)
應該是:
public function getOptions(array sort($aggs), $filterEmptyOptions = true)
但它不不工作,我應該在哪裏添加sort()到數組中?
編輯:我想啤酒廠的名字按字母順序排序
這是我的全部代碼,如果它可以更容易?
class BreweryBoolMustFilter implements BoolFilterInterface
{
/**
* @param Query $query
* @param Query\BoolQuery $bool
* @param Request $request
* @param array $filters
*/
public function __construct(Query $query, Query\BoolQuery $bool, Request $request, array &$filters)
{
if ($request->query->has('brewery') && (int) $request->query->get('brewery'))
{
$filters['brewery'] = (int) $request->query->get('brewery');
$bool->addMust(new Query\Term(['breweryId' => $filters['brewery']]));
}
$aggs3 = new Terms('breweries');
$aggs3->setField('breweryId');
$aggs3->setSize(100);
$query->addAggregation($aggs3);
}
/**
* @param array $aggs
* @param bool $filterEmptyOptions
*
* @return array
*/
public function getOptions(array $aggs, $filterEmptyOptions = true)
{
$breweriesObjects = (new BreweryQuery)->find();
$breweries = [];
foreach ($breweriesObjects as $breweryObject)
{
$breweries[$breweryObject->getId()] = [
'name' => $breweryObject->getName(),
'doc_count' => 0,
];
}
foreach ($aggs['breweries']['buckets'] as $bucket)
{
if (isset($breweries[$bucket['key']]))
{
$breweries[$bucket['key']]['doc_count'] = $bucket['doc_count'];
}
}
if (true === $filterEmptyOptions)
{
foreach ($breweries as $key => $brewery)
{
if (0 == $brewery['doc_count'])
{
unset($breweries[$key]);
}
}
}
return $breweries;
}
你不把函數調用一個函數,你把它放在函數體中。 – Barmar
查看大量有關排序數組信息的重複問題。然後用它在每個元素中用'name'值對'$ breweries'進行排序。 – Barmar
@Barmar不是重複的,因爲問題的主要問題不僅僅是排序,而且還在另一個參數的內部運行函數,所以我建議您重新考慮 – calexandre