1

名前のアルファベット順に並べ替える必要があるドロップダウン メニューがあります。

これがコードです

<?php foreach ($option['option_value'] as $option_value) { ?>
    <option value="<?php echo $option_value['product_option_value_id']; ?>"><?php
        echo $option_value['name'];
        if ($option_value['price']) {
            ?>(<?php echo $option_value['price_prefix']; ?><?php echo $option_value['price']; ?>)<?php
        }
        ?>
    </option>
    <?php
}
?>

$option_value を $option_value['name'] でソートしたい。どうすればこれを達成できますか?

アップデート

問題を解決しない前に sort() または asort() を使用すると、私が得る順序は

<option value="14598">Medium - red (0588390) [0]    </option>
<option value="14599">large - WHITE (0592167) [1]  </option>
<option value="14600">Medium - WHITE (0592168) [3]  </option>
<option value="14601">large - THE ROYALS (0592169) [0]  </option>
<option value="14602">Medium - THE ROYALS (0592170) [2] </option>

値IDでソートしますが、名前でソートする必要があります

4

3 に答える 3

4

foreachの前にこれを試してください:

function mysort($a, $b)
{
    return strcmp($a['option_value']['name'], $b['option_value']['name']);
}

usort($option, 'mysort');
于 2013-01-11T15:31:18.147 に答える
2

$option['option_value']はオプション値を含む配列で、次の前にソートする必要がありますfor...each:

function mysort($a, $b) {
    return strcmp($a['name'], $b['name']);
}
usort($option['option_value'], 'mysort');

次に、前と同じように繰り返します。

foreach ($option['option_value'] as $option_value) {
}
于 2013-01-11T16:03:52.883 に答える
0

ここで参照できます

つまり、 asort 関数 asort($option['option_value']) や、実行可能と思われるオプションから直接使用できます。asortは、最初の列エントリに基づいて配列を並べ替えます。つまり、内部配列の最初のキーがname役立つ場合

于 2013-01-11T15:37:43.023 に答える