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 回答