Сортировать категории по имени с массивом в PHP - PullRequest
0 голосов
/ 01 апреля 2012
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 (), но у меня они не сработали. Как я могу это сделать? Спасибо вперед

1 Ответ

0 голосов
/ 01 апреля 2012

Попробуйте 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");
...