首页 > 解决方案 > php:根据是否存在的键对多维数组进行排序

问题描述

嗨,我需要根据键名重新排序多数组。但是那个键不仅相同(只有 2 种类型的键名,例如示例)。我将发布一个示例:

$array = array(
   0 => array(
      "FixedValue" => 550
   ),
   1 => array(
      "Percentage" => 10
   ),
   2 => array(
      "FixedValue" => 10
   ),
   3 => array(
      "FixedValue" => 980
   ),
   4 => array(
      "Percentage" => 90
   )
)

我的目标是有一个新数组,其中“FixedValue”列表出现在“百分比”之前,例如:

$new_array = array(
   0 => array(
      "FixedValue" => 550
   ),
   1 => array(
      "FixedValue" => 10
   ),
   2 => array(
      "FixedValue" => 980
   ),
   3 => array(
      "Percentage" => 90
   ),
   4 => array(
      "Percentage" => 10
   )
)

我不需要值排序,只需要键排序。

有什么建议吗?

标签: phparrays

解决方案


$array = array(
  0 => array(
    "FixedValue" => 550
  ),
  1 => array(
    "Percentage" => 10
  ),
  2 => array(
    "FixedValue" => 10
  ),
  3 => array(
    "FixedValue" => 980
  ),
  4 => array(
    "Percentage" => 90
  )
);

usort($array,function($a,$b) {
  return key($a) <=> key($b);
});

var_dump($array);

结果:

array(5) {
  [0]=>
  array(1) {
    ["FixedValue"]=>
    int(550)
  }
  [1]=>
  array(1) {
    ["FixedValue"]=>
    int(10)
  }
  [2]=>
  array(1) {
    ["FixedValue"]=>
    int(980)
  }
  [3]=>
  array(1) {
    ["Percentage"]=>
    int(10)
  }
  [4]=>
  array(1) {
    ["Percentage"]=>
    int(90)
  }
}

推荐阅读