gpt4 book ai didi

php - 如何在 PHP 中重新排序嵌套元素?

转载 作者:行者123 更新时间:2023-11-29 13:24:38 30 4
gpt4 key购买 nike

我有一个嵌套项目(类别)列表,我想按顺序和嵌套深度重新组织。我将尝试解释:

enter image description here

当我通过点击蓝色按钮保存使用 jQuery 提交表单时,它会处理 models/categories_model.php 中的一个函数:

public function organize($items){
if( count($items)){
foreach($items as $order => $item){
if($item['item_id'] != ''){
echo '<pre>'.$order.'</pre>';
$data = array(
'pid' => (int) $item['parent_id'],
'ordering' => $order
);
$this->db
->set($data)
->where($this->_primary_key, $item['item_id'])
->update($this->_table_name);
}
}
}
}

它像这样保存该列表:

1
2
3
4
5
6
7
8
9
10

不要像这样保存它:

1
1
2
3
4
2
1
2
3
1
2
1
2
3
3

它不应该逐一获取 $order 值,而应该考虑其嵌套项目并从 1 开始计数 $order,而不是继续计数来自它的父项。

所以当我保存它时,我希望它们像这样排序,但不知道该怎么做:

enter image description here

有人知道如何使其与嵌套项目一起使用吗?

最佳答案

如果方法以正确的顺序接收项目,这应该可以工作:

public function organize($items)
{
if (!empty($items)) {
$orderByPid = array();
foreach ($items as $item) {
if($item['item_id'] != '') {
if (!isset($orderByPid[$item['parent_id']])) {
$orderByPid[$item['parent_id']] = 0;
}
$data = array(
'pid' => (int) $item['parent_id'],
'ordering' => ++$orderByPid[$item['parent_id']]
);
$this->db
->set($data)
->where($this->_primary_key, $item['item_id'])
->update($this->_table_name);
}
}
}
}

关于php - 如何在 PHP 中重新排序嵌套元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20314431/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com