Php 如何按照我定义的特定顺序对数组进行排序?

Php 如何按照我定义的特定顺序对数组进行排序?,php,arrays,multidimensional-array,associative-array,Php,Arrays,Multidimensional Array,Associative Array,我想按照我定义的特定顺序对数组进行排序 我已经开始构建一个函数来对这些数组进行排序,但我陷入了困境,不知道如何解决它 我当前的代码: public function order_spells($champions) { foreach(array_keys($champions) as $champion){ if(isset($champions[$champion]['Passive']) || isset($champions[$champion]['Q'])

我想按照我定义的特定顺序对数组进行排序

我已经开始构建一个函数来对这些数组进行排序,但我陷入了困境,不知道如何解决它

我当前的代码:

public function order_spells($champions) {

    foreach(array_keys($champions) as $champion){

        if(isset($champions[$champion]['Passive']) || isset($champions[$champion]['Q']) || isset($champions[$champion]['W']) || isset($champions[$champion]['E']) || isset($champions[$champion]['R'])) {

            foreach(array_keys($champions[$champion]) as $Spell_Icon) {

                if($Spell_Icon!='General'){ 
                    //echo $Spell_Icon;
                }

            }

        }

    }

}
这是当前阵列:

这是预期的产出:

由于我一直在使用上面的当前代码,我将尝试隔离和简化我的问题,并将其展示给您

作为一个简单的例子,我有一个如下的数组:

$champions = [
    "A" => 1,
    "C" => 2,
    "F" => 3,
    "B" => 4,
    "G" => 5,
    "D" => 6,
    "E" => 7,
];
现在我想定义该数组的顺序,例如,第一个键
F
,然后是
D
,等等。。。如何更改上述代码以使其按我所希望的方式工作?或者我如何在这里订购这个示例数组

这里要提到的另一个转折点是,顺序可能比数组本身包含更多的元素。例如

Order: C,D,A,B
Array: A,B,C

只需弹出数组的最后一个元素,并将其再次放在数组的开头,例如

$arr = array_pop($champion["Ashe"]);
$champion["Ashe"] = ["E" => $arr] + $champion["Ashe"];
编辑:

根据注释,您希望按特定顺序对数组进行排序,但不知道哪些元素确实在数组中,哪些元素不在数组中。所以这应该对你有用:

基本上,首先定义一个数组的顺序。然后用另一个数组填充数组,并用空值填充

这意味着您将以这个数组结束,其中顺序是键,所有数组都以空数组作为值,例如

Array (
    [F] => Array ( )  
    [A] => Array ( )
    [B] => Array ( )
    [G] => Array ( )    
    [C] => Array ( )
    [E] => Array ( )
    [D] => Array ( )   
)
然后,您可以使用此数组对数组进行任意排序。最后,您可以使用筛选出空数组

代码:


只需弹出数组的最后一个元素,并将其再次放在数组的开头,例如

$arr = array_pop($champion["Ashe"]);
$champion["Ashe"] = ["E" => $arr] + $champion["Ashe"];
编辑:

根据注释,您希望按特定顺序对数组进行排序,但不知道哪些元素确实在数组中,哪些元素不在数组中。所以这应该对你有用:

基本上,首先定义一个数组的顺序。然后用另一个数组填充数组,并用空值填充

这意味着您将以这个数组结束,其中顺序是键,所有数组都以空数组作为值,例如

Array (
    [F] => Array ( )  
    [A] => Array ( )
    [B] => Array ( )
    [G] => Array ( )    
    [C] => Array ( )
    [E] => Array ( )
    [D] => Array ( )   
)
然后,您可以使用此数组对数组进行任意排序。最后,您可以使用筛选出空数组

代码:


只需弹出数组的最后一个元素,并将其再次放在数组的开头,例如

$arr = array_pop($champion["Ashe"]);
$champion["Ashe"] = ["E" => $arr] + $champion["Ashe"];
编辑:

根据注释,您希望按特定顺序对数组进行排序,但不知道哪些元素确实在数组中,哪些元素不在数组中。所以这应该对你有用:

基本上,首先定义一个数组的顺序。然后用另一个数组填充数组,并用空值填充

这意味着您将以这个数组结束,其中顺序是键,所有数组都以空数组作为值,例如

Array (
    [F] => Array ( )  
    [A] => Array ( )
    [B] => Array ( )
    [G] => Array ( )    
    [C] => Array ( )
    [E] => Array ( )
    [D] => Array ( )   
)
然后,您可以使用此数组对数组进行任意排序。最后,您可以使用筛选出空数组

代码:


只需弹出数组的最后一个元素,并将其再次放在数组的开头,例如

$arr = array_pop($champion["Ashe"]);
$champion["Ashe"] = ["E" => $arr] + $champion["Ashe"];
编辑:

根据注释,您希望按特定顺序对数组进行排序,但不知道哪些元素确实在数组中,哪些元素不在数组中。所以这应该对你有用:

基本上,首先定义一个数组的顺序。然后用另一个数组填充数组,并用空值填充

这意味着您将以这个数组结束,其中顺序是键,所有数组都以空数组作为值,例如

Array (
    [F] => Array ( )  
    [A] => Array ( )
    [B] => Array ( )
    [G] => Array ( )    
    [C] => Array ( )
    [E] => Array ( )
    [D] => Array ( )   
)
然后,您可以使用此数组对数组进行任意排序。最后,您可以使用筛选出空数组

代码:



很高兴你有权发布链接和图片。但是请在你的问题中把代码/输出贴在这里。还向我们展示一些努力/尝试,以及您如何尝试解决问题。您从何处获得此阵列?你是如何创建它的?我已经添加了你们要求的代码,通常在我添加代码时,人们会指出代码中的小错误,这些错误会让我找到真正问题的解决方案。如果你的选择有所改变,那么你就有了数组,所以只要按你的意愿改变列的顺序。@Higeath试试类似的方法:
$arr=array\u pop($champion[“Ashe”];$champion[“Ashe”]=[“E”=>$arr]+$champion[“Ashe”];
很高兴您有权发布链接和图片。但请在您的问题中发布代码/输出。同时向我们展示一些努力/尝试,你是如何试图解决这个问题的。你从哪里得到这个数组?你是如何创建它的?我已经添加了你们要求的代码,通常当我这样做的时候,人们会指出代码中的小错误,这些错误将我指向真正问题的解决方案。在你的选择中做一个更改,从那里你就有了数组,所以只需更改h列的顺序你想怎么做。@Higeath试试这样的东西:
$arr=array\u pop($champion[“Ashe”]);$champion[“Ashe”]=[“E”=>$arr]+$champion[“Ashe”];
很高兴你有权发布链接和图片。但请在你的问题中发布代码/输出。同时向我们展示一些努力/尝试,你是如何试图解决这个问题的。你从哪里得到这个数组?你是如何创建它的?我已经添加了你们要求的代码,通常当我这样做的时候,人们会指出代码中的小错误,这些错误将我指向真正问题的解决方案。在你的选择中做一个更改,从那里你就有了数组,所以只需更改h列的顺序你想怎么做。@Higeath试试这样的东西:
$arr=array\u pop($champion[“Ashe”]);$champion[“Ashe”]=[“E”=>$arr]+$champion[“Ashe”];
很高兴你有权发布链接和图片。但请在你的问题中发布代码/输出。同时向我们展示一些努力/尝试,您是如何尝试解决此问题的。从何处获得此数组?H