我有一个下拉菜单,需要按名称按字母顺序排序。
这是代码
<?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排序,但我需要按名称
排序答案 0 :(得分:4)
在你的foreach之前试试这个:
function mysort($a, $b)
{
return strcmp($a['option_value']['name'], $b['option_value']['name']);
}
usort($option, 'mysort');
答案 1 :(得分: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) {
}
答案 2 :(得分:0)
您可以参考here
即你可以直接使用
asort
功能
asort($option['option_value'])
或任何其他您觉得可行的选项。
asort将根据第一列条目对数组进行排序,即如果您的内部数组第一个键是name
则会有帮助