2017-05-11 16 views
0

コンポーネントのリストを出力して正常に動作する、この簡単なforeach呼び出しがあります。PHP - あらかじめ定義されたforeachをカスタム順序で並べ替えます。

foreach ($config["components"] as $component_index => $component) { 
    echo '<li>$component['name']</li>'; 
} 

問題は、foreachループの順に値が事前に定義されていることがあり、変更することはできませんが、私は異なる順序で出力することをする必要があります。

は、これらのhttp://php.net/manual/en/array.sorting.phpのいくつかを見てみましょうカスタムオーダー(それは任意の標準の方向に従っていない、アルファベット、数値など)

+1

http://php.net/manual/en/array.sorting.php – clearshot66

+0

のソートロジックを説明し、関連するサンプルデータと期待される出力を提供してください。 – mickmackusa

答えて

0

に再配置し、それらのことが可能です

リンゴ、ナシ、オレンジ、オレンジ、リンゴ、ナシの順番のような注文は文字通り自分で追加することなく可能です。

あなたはソートアルゴリズムカスタムを必要として、あなたはusort機能を使用することができます

0

..あなたは最低にあなたの最高をランク付けするから...

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

を言うことができるが、それは非常に非効率的です。私は疑問に見ることができるものから、したがって、あなたがこのような何かを行うことができ、インデックスを気にしないでください:

$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>"; 
} 

は、より多くの情報のためusort function documentationを見てください。

関連する問題