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

时间:2013-01-11 15:28:11

标签: 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_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排序,但我需要按名称

排序

3 个答案:

答案 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则会有帮助