PHP-按自定义顺序对预定义的foreach进行排序

PHP-按自定义顺序对预定义的foreach进行排序,php,arrays,foreach,Php,Arrays,Foreach,我有一个简单的foreach调用,它输出一个组件列表,运行良好 foreach ($config["components"] as $component_index => $component) { echo '<li>$component['name']</li>'; } foreach($config[“components”]as$component\u index=>$component){ echo'$component['name']'; }

我有一个简单的foreach调用,它输出一个组件列表,运行良好

foreach ($config["components"] as $component_index => $component) {
    echo '<li>$component['name']</li>';
}
foreach($config[“components”]as$component\u index=>$component){
echo'
  • $component['name']
  • '; }
    然而,问题是foreach循环顺序中的值是预定义的,不能更改,但我需要以不同的顺序输出它们


    是否可以将它们重新排列为自定义顺序(不遵循任何标准方向、字母顺序、数字顺序等)。

    看看其中的一些

    定制订购,比如,有苹果、梨、橘子,并且想要他们在橘子、苹果、梨的订单中,如果不在自己身上添加它们,是不可能的

    你可以说

    if($component == "thisOne"){ 
          add to array
    }elseif($component == "thisOtherOne"{
         add to array
    }elseif....
    

    从最高排名到最低排名,但效率很低

    由于需要自定义排序算法,可以使用
    usort
    函数。从我在问题中看到的,你不关心指数,因此你可以这样做:

    $components = usort(
        array_values($config['components']),
        function ($a, $b)
        {
            //provide your custom sort function here
            //$a and $b are two "components"
            //for any given pair of $a and $b
            //return -1 if $a should go before $b,
            //return 0 if they are the same
            //return 1 if $a should go after $b
        }
    );
    
    foreach ($components as $component) {
        $echo "<li>{$component['name']}</li>";
    }
    
    $components=usort(
    数组_值($config['components']),
    功能($a$b)
    {
    //在此处提供自定义排序功能
    //$a和$b是两个“组件”
    //对于任何给定的$a和$b对
    //如果$a应在$b之前,则返回-1,
    //如果它们相同,则返回0
    //如果$a应该在$b之后,则返回1
    }
    );
    foreach($components作为$component){
    $echo“
  • {$component['name']}
  • ”; }

    查看更多信息。

    查看其中一些。请解释您的排序逻辑,提供一些相关样本数据和预期输出。