3 回答

TA貢獻(xiàn)1155條經(jīng)驗 獲得超0個贊
使用 PHP 7 Spaceship Operator <=> 爆炸后使用 usort() 和數(shù)組比較:
usort($multi, function($a,$b){
return explode("-",$b['order']) <=> explode("-",$a['order']);
});
如果 order 始終具有固定格式,例如 3-1-9(而不是 31-4-345),則可以省略 explode:
usort($multi, function($a,$b){return $b['order'] <=> $a['order'];});

TA貢獻(xiàn)1804條經(jīng)驗 獲得超2個贊
你可以試試下面的代碼
$multi = array(
array(
'hashtag'=>'a7e87329b5eab8578f4f1098a152d6f4',
'title'=>'Flower',
'order'=>'3-1-9'
),
array(
'hashtag'=>'b24ce0cd392a5b0b8dedc66c25213594',
'title'=>'Free',
'order'=>'2-7-5'
),
array(
'hashtag'=>'e7d31fc0602fb2ede144d18cdffd816b',
'title'=>'Ready',
'order'=>'2-6-3'
),
array(
'hashtag'=>'e7d31fc0602fb2ede144d18cdffd816b',
'title'=>'Ready',
'order'=>'3-6-3'
),
);
function sortByOrder($a, $b) {
return str_replace("-","", $a['order']) - str_replace("-","",$b['order']);
//For decending use the below code
//return str_replace("-","", $b['order']) - str_replace("-","",$a['order']);
}
usort($multi, 'sortByOrder');
echo '<pre>';
print_r($multi);

TA貢獻(xiàn)1801條經(jīng)驗 獲得超16個贊
您可以對這些值使用explode function,作為分隔符傳遞-,因此您將從array破折號分隔的數(shù)字中獲得一個數(shù)字字符串。在進(jìn)行比較之前將數(shù)字字符串轉(zhuǎn)換為數(shù)字,然后對其進(jìn)行排序,例如:
function cmp($a, $b) {
$aArray = explode("-", $a["order"]);
$bArray = explode("-", $b["order"]);
for ($index = 0; $index < min([count[$aArray], count[$bArray]]); $index++) {
$intA = (int)$aArray[$index];
$intB = (int)$bArray[$index];
if ($intA !== $intB) return (($intA < $intB) ? 1 : -1); //Descending
}
if (count($aArray) === count($bArray)) return 0;
return ((count($aArray) < count($bArray)) ? 1 : -1); //Descending
}
然后使用這個:
usort($yourArray, "cmp");
- 3 回答
- 0 關(guān)注
- 131 瀏覽
添加回答
舉報