PHP自定义按特定变量排序
你好, 以下代码按预期工作,并给出预期结果:PHP自定义按特定变量排序,php,sorting,Php,Sorting,你好, 以下代码按预期工作,并给出预期结果: $f = 'Focus' . ' : ' . $jobdemand_F . ' - ' . $foil_F_answer; $o = 'Organisation' . ' : ' . $jobdemand_O . ' - ' . $foil_O_answer; $i = 'Interaction' . ' : ' . $jobdemand_I . '
$f = 'Focus' . ' : ' . $jobdemand_F . ' - ' . $foil_F_answer;
$o = 'Organisation' . ' : ' . $jobdemand_O . ' - ' . $foil_O_answer;
$i = 'Interaction' . ' : ' . $jobdemand_I . ' - ' . $foil_I_answer;
$l = 'Load' . ' : ' . $jobdemand_L . ' - ' . $foil_L_answer;
$foilorder=array($f, $o, $i, $l);
sort($foilorder);
$arrlength=count($foilorder);
for($x=0;$x<$arrlength;$x++)
{
echo $foilorder[$x];
echo "<br>";
}
我想对第二个变量进行排序:
例如,$jobdemand\u F
使输出成为
Organisation : 1 - Average
Focus : 2 - Below average
Load : 3 - Average
Interaction : 4 - Average
请给我指出正确的方向。您可以使用
usort
:
function cmp($a, $b) {
$anumber = substr($a, strpos($a, ": ") + 1);
$anumber = substr($anumber , 1, 1);
$bnumber = substr($b, strpos($b, ": ") + 1);
$bnumber = substr($bnumber , 1, 1);
if ($anumber == $bnumber) {
return 0;
}
return ($anumber < $bnumber) ? -1 : 1;
}
// sort
uasort($array, 'cmp');
函数cmp($a,$b){
$anumber=substr($a,strpos($a,“:”)+1);
$anumber=substr($anumber,1,1);
$b编号=substr($b,STRPO($b,“:”)+1);
$bnumber=substr($bnumber,1,1);
如果($anumber==$bnumber){
返回0;
}
回报率($a数量<$b数量)?-1:1;
}
//分类
uasort($array,'cmp');
您可以使用而不是排序
函数通过用户定义的比较对值进行排序
使用-FILTER\u SANITIZE\u NUMBER\u INT
从字符串中获取数字:
usort($foilorder, function($a, $b) {
$a = (int)filter_var($a, FILTER_SANITIZE_NUMBER_INT);
$b = (int)filter_var($b, FILTER_SANITIZE_NUMBER_INT);
return ($a < $b) ? -1 : 1;
});
usort($foilorder,function($a,$b){
$a=(int)filter\u var($a,filter\u SANITIZE\u NUMBER\u int);
$b=(int)filter\u var($b,filter\u SANITIZE\u NUMBER\u int);
回报率($a<$b)?-1:1;
});
注意:相反,您可以在构建字符串之前进行排序。假设您可以将变量声明为关联数组,然后对它们进行排序,将其构建为所需的字符串。这减少了这些复杂性,也减少了代码行
usort($foilorder, function($a, $b) {
$a = (int)filter_var($a, FILTER_SANITIZE_NUMBER_INT);
$b = (int)filter_var($b, FILTER_SANITIZE_NUMBER_INT);
return ($a < $b) ? -1 : 1;
});