我正在尝试创建一个简单的程序,将比较基于另一个关联数组的关联数组:
$ArrayPriority = array("P1"=>3, "P2"=>5, "P3"=>1, "P4"=>1, "P5"=>4);
$ArrayBurst = array("P1"=>1, "P2"=>2, "P3"=>5, "P4"=>6, "P5"=>9);
是否有一个排序函数来生成$ArrayBurst
的输出:
P3 = 5
P4 = 6
P1 = 1
P5 = 9
P2 = 2
基本上,我想根据$ArrayPriority
对$ArrayBurst
进行排序,然后显示$ArrayBurst
的键和值。
现在,我只能根据值对$ArrayPriority
进行排序,我使用array_multisort
来这样做:
array_multisort(array_values($ArrayPriority), SORT_ASC, array_keys($ArrayPriority), SORT_ASC, $ArrayPriority);
将$ArrayPriority
安排为:
P3 = 1
P4 = 1
P1 = 3
P5 = 4
P2 = 5
如果它们在$ArrayPriority
中具有相同的值,它们是否需要在$ArrayPriority
中建立相同的顺序?如果没有,应该可以。
<?php
$ArrayPriority = array("P1"=>3, "P2"=>5, "P3"=>1, "P4"=>1, "P5"=>4);
$ArrayBurst = array("P1"=>1, "P2"=>2, "P3"=>5, "P4"=>6, "P5"=>9);
asort($ArrayPriority);
$output = [];
foreach($ArrayPriority as $key => $value) {
echo "<p>" . $key . " = " . $ArrayBurst[$key] . "</p>";
}
?>
这个怎么样?
<?
$ArrayPriority = array("P1"=>3, "P2"=>5, "P3"=>1, "P4"=>1, "P5"=>4);
$ArrayBurst = array("P1"=>1, "P2"=>2, "P3"=>5, "P4"=>6, "P5"=>9);
uasort($ArrayPriority, function ($p, $n) { return $p - $n;});
uksort($ArrayBurst, function ($p, $n) use($ArrayPriority) {
return $ArrayPriority[$p] - $ArrayPriority[$n];
});
echo '<pre>' . print_r(array($ArrayPriority, $ArrayBurst), 1) . '</pre>';
和在线pad
注:U可以修改代码,以保持具有相同优先级的突发顺序,即按照$ArrayPriority
的密钥顺序先处理P3,后处理P4。