【问题标题】:how to create a list from a reversed array in php如何从php中的反向数组创建列表
【发布时间】:2016-03-17 12:53:20
【问题描述】:

我使用jQuery nestedSortable Plugin,只要他们更改订单,它就会返回一个项目列表。所以从如下列表中:

Item 371
Item 372
    Item 373
    Item 374
Item 375

我收到以下数组:

'0' ...
    'id' => "371"
    'parent_id' ...
    'depth' => "0"
    'has_child' => "0"
'1' ...
    'id' => "373"
    'parent_id' => "372"
    'depth' => "1"
    'has_child' => "0"
'2' ...
    'id' => "374"
    'parent_id' => "372"
    'depth' => "1"
    'has_child' => "0"
'3' ...
    'id' => "372"
    'parent_id' ...
    'depth' => "0"
    'has_child' => "1"
'4' ...
    'id' => "375"
    'parent_id' ...
    'depth' => "0"
    'has_child' => "0"

我现在正在做的是存储每个项目的优先级(即array no)。

问题在于,通过提供的数组,子项(在上面的示例中 12)与其父项(在上面的示例中 3)相比具有更高的优先级。

现在这使得在重新加载视图时无法重新创建列表,因为子项将在父项之前回显。

还有其他方法可以从这个数组中重新创建列表吗?

编辑

元素不能有孙子,depth 只能是01

【问题讨论】:

  • 元素可以有孙子(和更深的后代)吗?
  • 抱歉没有提及。不,深度最大为 1。

标签: php logic jquery-ui-sortable


【解决方案1】:

这种方法怎么样(其中 $list 是您给定的数组):

$queue=array();
foreach($list as $v){
    if($v['parent_id']==0){
        echo 'Item '.$v['id'];
        foreach($queue as $child){
            echo ': Item '.$child['id'];
        }
        $queue=array();
    }
    else {
        $queue[]=$v;    
    }
}

【讨论】:

  • 非常感谢,我将采用您的解决方案,因为没有太多记录可以迭代。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-11-23
  • 1970-01-01
  • 2015-07-17
  • 1970-01-01
  • 2020-04-04
  • 2011-06-12
  • 2011-01-26
相关资源
最近更新 更多