按字母排序

时间:2012-12-03 22:43:08

标签: php

是否可以将数组的结果输出到按字母顺序排序的HTML列表中。这就是我的意思。我有一个以下格式的数组:

$myArray = array(
    "apple" => "Fruit that grows ...", 
    "car" => "Vehicle on four...", 
    "ant" => "Insect ..."
    ...
);

期望的输出:

<ul>A
   <li>ant</li>
   <li>apple</li>
</ul>
<ul>C
   <li>car</li>
</ul>

等。

2 个答案:

答案 0 :(得分:2)

您可以使用以下命令按键按字母顺序排列数组:

ksort($myArray);

答案 1 :(得分:2)

首先,按键按字母顺序对数组进行排序:

ksort($myArray);

或者如果您想进行不区分大小写的排序:

uksort($myArray, "strnatcasecmp");

然后创建一个临时数组,将所有以相同字母开头的单词分组为子数组:

$arrTemp = array();
foreach($myArray as $strKey => $strValue) {
    $strLetter = strtolower( substr($strKey, 0, 1) );
    if(array_key_exists($strLetter, $arrTemp) === FALSE) {
        $arrTemp[$strLetter] = array();
    }
    array_push( $arrTemp[$strLetter], $strKey );
}

最后,渲染HTML:

foreach($arrTemp as $strLetter => $arrWords) {
    print('<ul>' . strtoupper($strLetter));
    foreach($arrWords as $strWord) {
        print('    <li>' . $strWord . '</li>');
    }
    print('</ul>');
}