【问题标题】:Sort a multidimensional array in PHP by a given value按给定值对 PHP 中的多维数组进行排序
【发布时间】:2021-09-14 10:57:03
【问题描述】:

我有以下结构:

{
"data": {
    "array_1": [
        {
            "name": "Robert Kalani"
        },
        {
            "name": "Balkan Boy",
        }
    ],
    "array_2": [
        {
            "name": "Pepe Dolan"
        },
        {
            "name": "John Nolan",
        }
    ],
    "array_3": [
        {
            "name": "Phillip A. Luna",
        },
        {
            "name": "Eugene Garcia"
        }
    ]
}

}

我想按名称键按字母顺序对每个数组进行排序,不知道如何做到这一点,我已经阅读了 array_multisort 但它似乎不起作用。非常感谢一些帮助

这是预期的输出

{
"data": {
    "array_1": [
        {
            "name": "Balkan Boy",
        },
        {
            "name": "Robert Kalani"
        }
    ],
    "array_2": [
        {
            "name": "John Nolan"
        },
        {
            "name": "Pepe Dolan"
        }
    ],
    "array_3": [
        {
            "name": "Eugene Garcia"
        },
        {
            "name": "Phillip A. Luna"
        }
    ]
}

}

【问题讨论】:

  • 您能告诉我们您预期的输出数组结构吗?
  • @BiswajitBiswas 刚刚添加,谢谢 :)
  • 你的数据是 JSON 结构的吗?
  • @BiswajitBiswas 是的 :)

标签: php arrays sorting optimization multidimensional-array


【解决方案1】:
// Your JSON Data
  $data = '{
"data": {
  "array_1": [{ "name": "Robert Kalani" }, { "name": "Balkan Boy" }],
  "array_2": [{ "name": "Pepe Dolan" }, { "name": "John Nolan" }],
  "array_3": [{ "name": "Phillip A. Luna" }, { "name": "Eugene Garcia" }]
}
}
';

  $result = [];

  // Convert your JSON data to associative array
  $array = json_decode($data, true)['data'];


  function sort_by_name($a, $b)
  {
    return $a > $b;
  }

  foreach ($array as $item) {
    uasort($item, "sort_by_name");
    $result[] = $item;
  }


  echo "<pre>";
  print_r($result);

结果:

Array
(
    [0] => Array
        (
            [1] => Array
                (
                    [name] => Balkan Boy
                )

            [0] => Array
                (
                    [name] => Robert Kalani
                )

        )

    [1] => Array
        (
            [1] => Array
                (
                    [name] => John Nolan
                )

            [0] => Array
                (
                    [name] => Pepe Dolan
                )

        )

    [2] => Array
        (
            [1] => Array
                (
                    [name] => Eugene Garcia
                )

            [0] => Array
                (
                    [name] => Phillip A. Luna
                )

        )

)

【讨论】:

    猜你喜欢
    • 2015-11-02
    • 2012-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多