PHP-按自定义顺序对预定义的foreach进行排序
我有一个简单的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 ($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']} ”;
}
查看更多信息。查看其中一些。请解释您的排序逻辑,提供一些相关样本数据和预期输出。