按值唯一数组键

时间:2015-08-21 13:19:01

标签: php arrays sorting

我想根据值对多维数组进行排序,请检查以下数组,

Array
(
    [1] => Array
        (
            [70000] => Aceh
        )

    [2] => Array
        (
            [70024] => Sumatera Utara
        )

    [3] => Array
        (
            [70058] => Barat
        )

    [4] => Array
        (
            [70078] => Riau
        )

    [5] => Array
        (
            [70091] => Jambi
        )
)

我希望它在排序之后是这样的,请检查下面的数组。

Array
(
    [1] => Array
        (
            [70000] => Aceh
        )

    [2] => Array
        (
            [70024] => Barat 
        )

    [3] => Array
        (
            [70058] => Jambi
        )

    [4] => Array
        (
            [70078] => Riau
        )

    [5] => Array
        (
            [70091] => Sumatera Utara
        )
)

任何人都可以帮助我找到好的解决方案。谢谢!。

2 个答案:

答案 0 :(得分:0)

你想要的非常奇怪的输出。使用这样的东西:

function weirdSort($array) {
  $out = [];
  $keys = [];
  $values = [];
  foreach($array as $k => $v) {
    $values[] = $v;
    $keys[] = $k;
  }
  usort($values);
  foreach($keys as $i => $key) {
    $out[] = [$key => $values[$i];
  }
  return $out;
}

答案 1 :(得分:0)

我不知道这种方式是好还是坏,但我想通过usort

输出
function cmp($a, $b) {
      if ($a[key($a)] == $b[key($b)]) return 0;
      return ($a[key($a)] > $b[key($b)]) ? 1 : -1;
   }
usort( $levelOneArray, 'cmp' );
print_r($levelOneArray);