排序两个关联数组


Sorting Two Associative Array

我正在尝试创建一个简单的程序,将比较基于另一个关联数组的关联数组:

$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。