作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个嵌套项目(类别)列表,我想按顺序和嵌套深度重新组织。我将尝试解释:
当我通过点击蓝色按钮保存使用 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
,而不是继续计数来自它的父项。
所以当我保存它时,我希望它们像这样排序,但不知道该怎么做:
有人知道如何使其与嵌套项目一起使用吗?
最佳答案
如果方法以正确的顺序接收项目,这应该可以工作:
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/
我是一名优秀的程序员,十分优秀!