自定义数组排序以强制某些值开始或结束数组

说我有一个数组


$ar = ['apples','blueberries','end','pears','dragonfruit','oranges','start','durian','lychee','rambutan','pineapple','end','start'];

我想要以某种顺序排列的数组(让我们说这个参数的字母顺序),但是数组尾部的值是 'end',而数组的头部是 'start'。


function cmp($a,$b) {

    if ($a == $b) return 0;

    if ($b === 'start') return 1;

    if ($b === 'end') return -1;

    return ($a < $b) ? -1 : 1;

}


usort($ar,"cmp");


echo implode(", ", $ar);

如何排序,以便匹配特定值的值最终位于数组的头部或尾部,但其他值将根据其他条件(例如数字、alpha 等)进行排序


慕的地10843
浏览 104回答 3
3回答

哈士奇WWW

您可以使用array_diffwith sort,array_push和array_unshift&nbsp;$elements = ['start','end'];//start & end elements array&nbsp;$rest&nbsp; &nbsp; &nbsp;= array_diff($ar, $elements);&nbsp;sort($rest);//Sorting of the rest items&nbsp;array_push($rest, $elements[1]);//Push end element&nbsp;&nbsp;&nbsp;array_unshift($rest, $elements[0]);//Push start element您可以rsort($rest)用于降序。现场示例:https : //3v4l.org/GnotC

FFIVE

尝试这个$ar = ['apples','blueberries','end','pears','dragonfruit','oranges','start','durian','lychee','rambutan','pineapple','end','start', 'end', 'banana', 'yellow'];function cmp($a, $b) {&nbsp; &nbsp; if ($a === $b) {&nbsp; &nbsp; &nbsp; &nbsp; return 0;&nbsp; &nbsp; }&nbsp; &nbsp; if ($a === 'start' ||&nbsp; $b === 'end' ) {&nbsp; &nbsp; &nbsp; &nbsp; return -1;&nbsp; &nbsp; }&nbsp; &nbsp; if( $b === 'start' || $a === 'end') {&nbsp; &nbsp; &nbsp; &nbsp; return 1;&nbsp; &nbsp; }&nbsp; &nbsp; return ($a < $b) ? -1 : 1; }&nbsp; &nbsp; usort($ar,"cmp");&nbsp; &nbsp; echo implode(', ', $ar);希望能帮到你

婷婷同学_

以下是您的 cmp 函数应该如何。只介绍了几个 if 语句。function cmp($a, $b) {&nbsp; &nbsp; if ($a === $b) {&nbsp; &nbsp; &nbsp; &nbsp; return 0;&nbsp; &nbsp; }&nbsp; &nbsp; if ($a === 'start' ) {&nbsp; &nbsp; &nbsp; &nbsp; return -1;&nbsp; &nbsp; }&nbsp; &nbsp; if( $b === 'start' ) {&nbsp; &nbsp; &nbsp; &nbsp; return 1;&nbsp; &nbsp; }&nbsp; &nbsp; if ($a === 'end' ) {&nbsp; &nbsp; &nbsp; &nbsp; return 1;&nbsp; &nbsp; }&nbsp; &nbsp; if ($b === 'end' ) {&nbsp; &nbsp; &nbsp; &nbsp; return -1;&nbsp; &nbsp; }&nbsp; &nbsp; &nbsp;&nbsp; &nbsp; return ($a < $b) ? -1 : 1;}
打开App,查看更多内容
随时随地看视频慕课网APP