PHP中的自定义排序数组

时间:2011-08-17 17:08:27

标签: php

  

可能重复:
  How can I sort arrays in php by a custom alphabet?

例如,我有六个字:

香蕉,苹果,爱情,zasca,日本,汽车

有没有办法按字母顺序排序,使用这个自定义顺序:“j,c,z,l,a”?

2 个答案:

答案 0 :(得分:7)

这里有一些粗略的代码可以帮助您入门:

基本上,它查看数据数组中每个单词的第一个字母,检查它在$sortOrder数组中的位置。不在$sortOrder中的字母会出现在订单的最后。

如果$sortOrder中有超过100,000件商品,那么这件事就会破裂。可能还有其他漏洞,但我认为它是usort()如何工作的一个不错的例子。

<?php
function getSortOrder($c) {
    $sortOrder = array("j","c","z","l","a");
    $pos = array_search($c, $sortOrder);

    return $pos !== false ? $pos : 99999;
}

function mysort($a, $b) {
    if( getSortOrder($a[0]) < getSortOrder($b[0]) ) {
        return -1;
    }elseif( getSortOrder($a[0]) == getSortOrder($b[0]) ) {
        return 0;
    }else {
        return 1;
    }
}

$data = array(
    "banana",
    "apple",
    "love",
    "zasca",
    "japanese",
    "car"
);

echo '<pre>' . print_r($data,true) . '</pre>';
usort($data, "mysort");
echo '<pre>' . print_r($data,true) . '</pre>';
?>

答案 1 :(得分:3)

是,请查看this documentation on usort()

编辑:对不起,我给了你关键的排序,但你想要比较值!