gpt4 book ai didi

PHP 分层数组 - 检查子值是否存在,然后将父属性值分配给其子数组

转载 作者:搜寻专家 更新时间:2023-10-31 20:56:46 24 4
gpt4 key购买 nike

我们有下面的 PHP 分层数组

$arr = [
[
'id' => 1,
'parent_id' => 0,
'access_type' => 'full-access',
'child' => [
[
'id' => 4,
'parent_id' => 1,
'access_type' => '',
],
[
'id' => 5,
'parent_id' => 1,
'access_type' => '',
],
],
],
[
'id' => 2,
'parent_id' => 0,
'access_type' => 'read',
'child' => [
[
'id' => 10,
'parent_id' => 2,
'access_type' => 'read-write',
'child' => [
[
'id' => 11,
'parent_id' => 10,
'access_type' => '',
],
[
'id' => 12,
'parent_id' => 10,
'access_type' => 'read',
],
],
],
[
'id' => 7,
'parent_id' => 3,
'access_type' => 'read-write',
],
],
],
[
'id' => 3,
'parent_id' => 0,
'access_type' => 'full-access',
'child' => [
[
'id' => 6,
'parent_id' => 3,
'access_type' => '',
'child' => [
[
'id' => 8,
'parent_id' => 6,
'access_type' => '',
],
[
'id' => 9,
'parent_id' => 6,
'access_type' => '',
],
],
],
[
'id' => 18,
'parent_id' => 3,
'access_type' => '',
],
],
],
[
'id' => 13,
'parent_id' => 0,
'access_type' => '',
'child' => [
[
'id' => 14,
'parent_id' => 13,
'access_type' => 'full-access',
'child' => [
[
'id' => 15,
'parent_id' => 14,
'access_type' => '',
],
[
'id' => 16,
'parent_id' => 14,
'access_type' => '',
],
],
],
[
'id' => 17,
'parent_id' => 13,
'access_type' => '',
],
],
],
];

我们需要这样的输出

enter image description here

我们这里有分层数组,我想显示 access_typefull-access 如果它的嵌套子项是空白。

我们已经尝试了下面的代码。

func_x($arr);

function func_x($arr, $level = 0)
{
foreach($arr as $x)
{
echo str_repeat("---", $level) . " [" . $x['id'] . "] -> " . $x['access_type'] . "<br>";

if(!empty($x['child']))
{
func_x($x['child'], $level+1);
}
}
}

最佳答案

您可以使用以下代码:

func_x($arr);

function func_x($arr, $level = 0, $parent = '')
{
foreach($arr as $x)
{
if( empty ( $x['access_type'] ) && $parent == 'full-access' ) {
$x['access_type'] = $parent;
}
echo str_repeat("---", $level) . " [" . $x['id'] . "] -> " . $x['access_type'] . "<br>";

if(!empty($x['child']))
{
func_x($x['child'], $level+1, $x['access_type']);
}
}
}

基本上您需要将父 access_type 作为第三个参数传递给您的递归函数。

在线演示 here

关于PHP 分层数组 - 检查子值是否存在,然后将父属性值分配给其子数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57805304/

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