Php 在foreach之前对数组值进行排序

Php 在foreach之前对数组值进行排序,php,arrays,sorting,Php,Arrays,Sorting,我有一个下拉菜单,需要按名称按字母顺序排序 这是密码 <?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_va

我有一个下拉菜单,需要按名称按字母顺序排序

这是密码

<?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_值按$option_值['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>
中红色(0588390)[0]
大号-白色(0592167)[1]
中等-白色(0592168)[3]
大型-皇家(0592169)[0]
中等-皇家(0592170)[2]

它按值ID排序,但我需要按它的名称排序

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

usort($option, 'mysort');

请在使用foreach之前尝试以下操作:

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

usort($option, 'mysort');
你可以参考

那就是你可以直接使用
asort
作用
asort($option['option\u value'])
或任何其他您认为可行的选项。 asort将根据第一列条目对数组进行排序,即如果您的内部数组第一个键是
name
,它将有助于您可以参考

那就是你可以直接使用
asort
作用
asort($option['option\u value'])
或任何其他您认为可行的选项。
asort将根据第一列条目对数组进行排序,即如果内部数组的第一个键是
名称
,它将有助于
$option['option\u value']
是包含选项值的数组,需要在每个
之前对其进行排序:

function mysort($a, $b) {
    return strcmp($a['name'], $b['name']);
}
usort($option['option_value'], 'mysort');
然后像前面一样迭代:

foreach ($option['option_value'] as $option_value) {
}

$option['option\u value']
是包含选项值的数组,它需要在每个
之前排序:

function mysort($a, $b) {
    return strcmp($a['name'], $b['name']);
}
usort($option['option_value'], 'mysort');
然后像前面一样迭代:

foreach ($option['option_value'] as $option_value) {
}

那么,在使用它之前,它是什么?!在环井之前使用usort(),在使用之前使用它?!在循环之前使用usort()。我得到以下错误:致命错误:无法将字符串偏移量用作数组。如果此答案不起作用,则
$option
与您在问题中给出的不一样。@Salman A:该编辑不正确$选项是需要排序的数组!回复。但请仔细观察:)您可以在mysort函数中反转$a和$b的位置。我得到以下错误:致命错误:无法将字符串偏移量用作数组如果此答案不起作用,则
$option
看起来与您在问题中给出的不一样。@Salman a:该编辑不正确$选项是需要排序的数组!回复。但是请仔细观察:)您可以在mysort函数中反转$a和$b的位置。比itchy的解释更好的清洁解决方案比itchy的解释更好的清洁解决方案