【发布时间】:2020-11-21 11:08:54
【问题描述】:
从此表中:
From this table
我在 PHP 中得到这个数组: array in PHP
我想向这个数组添加一个新行,我知道 category_id 和 parent_id,我如何编程 id_path 和 level ?
编辑1: 例如最后一行:category_id:107 , parent_id:106,如何编码 id_path=96/106/107 和级别? id_path:由斜线分隔的类别 ID 序列
编辑2:
function test() {
$arGiven = [
[
'category_id' => 100,
'parent_id' => 107,
'id_path' => '',
'level' => 0,
],
[
'category_id' => 106,
'parent_id' => 96,
'id_path' => '',
'level' => 0,
],
[
'category_id' => 107,
'parent_id' => 106,
'id_path' => '',
'level' => 0,
]
];
$arExpected = [
[
'category_id' => 100,
'parent_id' => 107,
'id_path' => '96/106/107/100',
'level' => 4,
],
[
'category_id' => 106,
'parent_id' => 96,
'id_path' => '96/106',
'level' => 2,
],
[
'category_id' => 107,
'parent_id' => 106,
'id_path' => '96/106/107',
'level' => 3,
]
];
$result = $arGiven;
return $result;
}
编辑3: 我用这段代码试了一下:
function test() {
$arGiven = [
[
'category_id' => 100,
'parent_id' => 107,
'id_path' => '',
'level' => 0,
],
[
'category_id' => 106,
'parent_id' => 96,
'id_path' => '',
'level' => 0,
],
[
'category_id' => 107,
'parent_id' => 106,
'id_path' => '',
'level' => 0,
]
];
$arExpected = [
[
'category_id' => 100,
'parent_id' => 107,
'id_path' => '96/106/107/100',
'level' => 4,
],
[
'category_id' => 106,
'parent_id' => 96,
'id_path' => '96/106',
'level' => 2,
],
[
'category_id' => 107,
'parent_id' => 106,
'id_path' => '96/106/107',
'level' => 3,
]
];
$arrays = $arGiven;
function getParent($arr, $parent){
foreach($arr as $v){
if($v['parent_id'] == $parent) return $v['parent_id'];
}
return false;
}
$newArray=[];
$i = 0;
foreach ($arrays as $array){
$newArray[] = $newArray[$i-1] . '/'. getParent($arrays, $array['parent_id']);
$i++;
}
$test=1;
return $array;
}
但是 $newArray 是
[
"/107",
"/107/96",
"/107/96/106"
]
代替:
[
'96/106/107/100',
'96/106',
'96/106/107'
]
【问题讨论】:
-
我不太明白你的问题,你想在数组末尾添加一行你已经拥有的变量吗?到目前为止你做了什么?你得到什么错误?
-
如何使用 foreach 或 array.map 生成 id_path 和级别?查看图片以获取新行。我需要一个新功能。
-
我在stackoverflow.com/questions/16150199/… 中找到了用于生成 id_path 的方法,但我找不到将示例更改为我的数组的解决方案,以便 id 路径与图片上的一样。
-
好的,到目前为止你尝试了什么?你会得到哪些错误?给我们看一些代码,否则我们无法帮你调试任何东西。
-
我已经用实际和目标扩展了这个问题。我尝试再次从另一个线程重写示例,当我尝试时,它不起作用,然后写入结果。