Php 按数字对数组排序,当数字相同时,按字母排序
我试图解决排序的问题。 正如我在标题中所写的,我需要按数字对数组进行排序,但当某些行具有相同的数字时,请按字母表对它们进行排序。我试着用两种排序法来实现这一点,但当我使用数字排序法,而不是字母排序法时,它就不起作用了。。所以我试着改变函数的顺序,但是在数字排序之后,它根本不保持字母排序。。。 有人能告诉我要编辑什么吗 代码如下:Php 按数字对数组排序,当数字相同时,按字母排序,php,arrays,sorting,Php,Arrays,Sorting,我试图解决排序的问题。 正如我在标题中所写的,我需要按数字对数组进行排序,但当某些行具有相同的数字时,请按字母表对它们进行排序。我试着用两种排序法来实现这一点,但当我使用数字排序法,而不是字母排序法时,它就不起作用了。。所以我试着改变函数的顺序,但是在数字排序之后,它根本不保持字母排序。。。 有人能告诉我要编辑什么吗 代码如下: $nodesToSort = $this->openedContextMenu->getPreparedNodes();
$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);
$nodesToSort=$this->openedContextMenu->getPreparedNodes();
$labelSort=函数($x,$y)
{
$xtranstrated=$this->getPresenter()->translator->translate($x->label);
$yTranslated=$this->getPresenter()->translator->translate($y->label);
返回strcmp($xtransated,$ytransated);
};
$compareSort=函数($a,$b)
{
如果($a->sort==$b->sort){
返回0;
}
返回($a->排序<$b->排序)?-1:1;
};
usort($nodesToSort,$labelSort);
usort($nodesToSort,$compareSort);
已解决。
我只需要合并这两个函数
$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;
};
$compareSort=函数($a,$b)
{
如果($a->sort==$b->sort){
$xtranstrated=$this->getPresenter()->translator->translate($a->label);
$yTranslated=$this->getPresenter()->translator->translate($b->label);
返回strcasecmp($xtransated,$ytransated);
}
返回($a->排序<$b->排序)?-1:1;
};
您是否非常不清楚?当您将相同的值作为数字或字符串进行排序时,会有什么不同?或者数字从哪里来,字母字符串从哪里来?或者让我这样问:sort
是否可能有数字和字母字符串?如果不是的话,你想从哪里得到排序的字母字符串。发布一些示例输入和所需输出,让它更清晰。