0
Armstuff > xxxxx 
Uncategorized
Biler > test 
HOVED > SUB 
Computere > Software 
Smykker 
Computere > Komponenter > RAM 
sss > bbb > kkk 
Computere > Komponenter > Harddiske 
gg 
Computere > Gadgets 
Biler > Ekstraudstyr 
sss > ddd 

これは私のカテゴリのリストであり、このコードによって出力されます。

<?php
foreach($categories as $category)
{
    echo $category['name'] . " <br />";
}
?>

これで、$ categoryサブカテゴリ名が正しく定義され、以前は次のコードで定義されていました。

foreach($categories as &$category)
{

    $parent = $category['parent'];
    while($parent > 0)
    {
        $parent_row = $db->select('name', 'paraent')->from('categories')->where('id', '=', $parent)->execute()->as_array();
        $parent_row = $parent_row[0];
        $category['name'] = $parent_row['name'] . " > {$category['name']}";
        $parent = $parent_row['parent'];

    }
}

出力をアルファベットで出力したいので、上記の例から、次のように出力する必要があります。

Armstuff > xxxxx
Biler > test
Biler > Ekstraudstyr
Computere > Gadgets
Computere > Komponenter > Harddiske
Computere > Komponenter > RAM
Computere > Software
gg
HOVED > SUB
Smykker
sss > bbb > kkk
sss > ddd
Uncategorized

単純にsort()、asort()を試しましたが、うまくいきませんでした。これどうやってするの?よろしくお願いします

4

1 に答える 1

0

usort独自の比較ツールを定義できるので試してみてください(http://at2.php.net/manual/de/function.usort.php)

例:

function cmpCategories($a, $b) {
    if ($a["name"] == $b["name"]) {
        return 0;
    }
    return ($a["name"] < $b["name"]) ? -1 : 1;
}

usort($categories, "cmpCategories");
于 2012-04-01T09:50:33.553 に答える