【问题标题】:Sort PHP array with children under parents对父级下的子级 PHP 数组进行排序
【发布时间】:2015-01-08 04:19:13
【问题描述】:

在这个例子中,我有一个元素数组。

$array = ["Element A", "Element B", "Element C", "Element D", "Element E"]

在进行数据库调用后(我已经弄清楚了这部分......),确定“B”和“D”是元素 E 的子元素。此外,“A”是“C”的子元素。

出于演示目的,parent($a) 将返回 "c",而 parent($e) 将返回 NULL

如何重新排列数组,使所有子元素都位于其父元素的正下方?

正确的解决方案是这样的,孩子直接在父母之后:

["E", "B", "D", "C", "A"]
["E", "D", "B", "C", "A"]
["C", "A", "E", "B", "D"]
["C", "A", "E", "D", "B"]

【问题讨论】:

  • 您希望数组在哪里排序?通过 SQL(您的数据库调用)还是在 PHP 中?现在,如果使用 for 循环,您必须遍历 $array 中的元素并调用 parent($array[$i]),弄清楚如何更改它们的顺序或推送到新的排序数组。
  • 您希望您的结果是什么样的?应该是['C', 'A', 'E', 'B', 'D']?还有什么?你想要一个多维数组吗? “下面”是什么意思?
  • 可能有助于显示您的数据库调用的结果。即,如何“确定”哪些元素是哪些元素的子元素。
  • 需要更多细节:数据库结构、示例数据、当前解决方案。
  • 听起来您正在尝试使用相同的排序数组来表示多个树结构。我认为这不是一个好主意。

标签: php


【解决方案1】:

以下一般结构可以概述如何订购您的问题。

if(CHILD) {
    if(PARENT EXISTS) {
        DELETE THIS ELEMENT
        INSERT AT LOCATION
    } else {
        DELETE THIS ELEMENT
        ADD PARENT
        RE-ADD THIS ELEMENT
    }
}

没有具体细节,只是一个大纲......

【讨论】:

  • 这个大纲让我可以创建实际的代码,谢谢! (接受)
猜你喜欢
  • 2013-07-23
  • 2017-03-24
  • 2018-07-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多