对两个关联数组进行排序

时间:2015-10-07 01:41:49

标签: php arrays sorting

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

$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

基本上,我想根据$ArrayBurst$ArrayPriority进行排序,然后显示$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

2 个答案:

答案 0 :(得分:0)

这个怎么样?

<?
  $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>';

online pad

P.S。 U可能会更改代码以保留突发信息。具有相同优先级的订单,即根据$ArrayPriority键的顺序处理P3之前的P3。

答案 1 :(得分:0)

如果<?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>"; } ?> 中的值相同,他们是否需要在re.sub中设置相同的订单?如果没有,这应该有用。

str.replace