如何将php关联数组按特定顺序排序?
这是我喜欢按特定顺序排序的数组如何将php关联数组按特定顺序排序?,php,arrays,Php,Arrays,这是我喜欢按特定顺序排序的数组 $aData = Array ( [break] => Array ( [Indoor room] => 42 [Gym Class] => 19 ) [finish] => Array ( [Indoor room] => 42 [Gym Class] => 19
$aData = Array
(
[break] => Array
(
[Indoor room] => 42
[Gym Class] => 19
)
[finish] => Array
(
[Indoor room] => 42
[Gym Class] => 19
)
[lunch] => Array
(
[Indoor room] => 7
)
[period1] => Array
(
[Indoor room] => 12
[Gym Class] => 22
)
[period2] => Array
(
[Gym Class] => 14
[Indoor room] => 25
)
[period3] => Array
(
[Gym Class] => 21
[Indoor room] => 11
)
[period4] => Array
(
[Gym Class] => 22
[Indoor room] => 20
)
[period5] => Array
(
[Gym Class] => 16
[Indoor room] => 9
)
)
但我喜欢这样的顺序:
break, period1, period2, lunch, period3, period5, period6, finish
为此,我尝试以下php代码
$arraySort = [
"break",
"period1",
"period2",
"period3",
"lunch",
"period4",
"period5",
"period6",
"finish"
];
foreach($aData as $period => $catsScore){
echo 'test '.$period.'<br/>';
$periodItem = [$period];
foreach($arraySort as $cat){
echo 'new: '.$cat.'<br/>';
$periodItem[] = $catsScore;
}
$output[] = $periodItem;
}
print_r($output);
$arraySort=[
“休息”,
“第1期”,
“第2期”,
“第3期”,
“午餐”,
“第4期”,
“第5期”,
“第6期”,
“完成”
];
foreach($aData作为$period=>$catsScore){
回显“测试”。$period.
;
$periodItem=[$period];
foreach($ArraySortas$cat){
回显“新:”.$cat.“
”;
$periodItem[]=$CatsCore;
}
$output[]=$periodItem;
}
打印(输出);
简单-只需使用数组排序
作为关联键,并从原始数组中获取相应的数组/值
<?php
$arraySort = [
"break",
"period1",
"period2",
"period3",
"lunch",
"period4",
"period5",
"period6",
"finish"
];
$final_array = [];
foreach($arraySort as $arraySo){
$final_array[$arraySo] = $aData[$arraySo];
}
print_r($final_array);
为此,您可以使用array\u combine
:
$arrary_sort = ["break", "period1"];
$final_array = array_combine($array_sort, $your_array_here);
生成正确排序的数组并按源数组中的值填充
$final_array = array_replace(array_fill_keys($arraySort, []), $aData);
或者,您可以使用实际的排序功能:
uksort(
$aData,
function($a,$b)use($arraySort){
return array_search($a, $arraySort) - array_search($b, $arraySort);
}
);
谢谢你,这是我能理解的。您只需使用arraySort作为assoc键,并从原始数组中获取相应的数组/值,对吗?@alex yes。这很容易。我想,ray_combine速度更快,看起来更简单。用你的输入试试。我认为这是行不通的:-顺便说一句,这是另一个Alex array\u组合不是办法,我认为这将只是“重命名”现有值,而不是正确地对它们重新排序您更改键但不重新排序数组