我正在尝试解决排序问题。 正如我写的标题,我需要按数字排序数组,但是当某些行具有相同的数字时,请按字母排序。我试图用两种方式来做这个,但是当我使用数字排序而不是按字母表排序时,它不起作用。所以我试图改变函数的顺序,但仍然,在数字排序之后,它根本不按字母排序...... 有人可以告诉我要编辑什么吗?
以下代码:
$nodesToSort = $this->openedContextMenu->getPreparedNodes();
$labelSort = function($x, $y)
{
$xTranslated = $this->getPresenter()->translator->translate($x->label);
$yTranslated = $this->getPresenter()->translator->translate($y->label);
return strcmp($xTranslated, $yTranslated);
};
$compareSort = function ($a, $b)
{
if ($a->sort == $b->sort) {
return 0;
}
return ($a->sort < $b->sort) ? -1 : 1;
};
usort($nodesToSort, $labelSort);
usort($nodesToSort, $compareSort);
答案 0 :(得分:0)
解决。 我只需合并这两个函数。
$compareSort = function ($a, $b)
{
if ($a->sort == $b->sort) {
$xTranslated = $this->getPresenter()->translator->translate($a->label);
$yTranslated = $this->getPresenter()->translator->translate($b->label);
return strcasecmp($xTranslated, $yTranslated);
}
return ($a->sort < $b->sort) ? -1 : 1;
};