0

こんにちは、テンプレートから次のコードがあります。

<ul class="sub-categories">
    <?php

        foreach ($category->getChildren() as $child) {
            if (!$child->totalItemCount()) continue;
            $link = $this->app->route->category($child);
            $item_count = ($this->params->get('template.show_sub_categories_item_count')) ? ' <span>('.$child->totalItemCount().')</span>' : '';
            echo '<li><a href="'.$link.'" title="'.$child->name.'">'.$child->name.'</a>'.$item_count.'</li>';
        }

    ?>
</ul>

サブカテゴリ項目 (コードのさらに上の州ごとに細分化された都市) を並べ替えたいと思います。

次の配列 $category->getChildren() をソートできると思っていましたが、うまくいきません。それで私はそれでエコーをしました、そしてそれは配列を言いました、それで私はその配列でvar_dumpをし、それでbool(true)を得ました。それを出力する他の方法(print_r)を試したところ、ページがクラッシュしました。

私は配列をよく理解していないので、誰かが配列ではないこの配列が何であるかを説明できますか? 都市リストを並べ替えるにはどうすればよいですか?

ありがとう!

4

1 に答える 1

1

配列を印刷しようとしたときに何が問題だったのかはよくわかりませんが、次のusort()ようにカスタムソートを定義すると、次のようになります。

<?php

function compareChildren ($a, $b) {
    return strcmp($a->name, $b->name);
}

$children = $category->getChildren();
usort($children, 'compareChildren');

foreach ($children as $child) {
    // ...
}

これがコードパッドでの実例です。

于 2012-07-12T18:20:26.360 に答える