【问题标题】:How to add a parent ID to every child in a array? php如何为数组中的每个孩子添加父 ID? php
【发布时间】:2017-02-17 19:48:01
【问题描述】:

大家好,我想知道如何在孩子中添加父 ID?

例如:MY_ARRAY

(
[id] => 4
[children] => Array
    (
        [0] => Array
            (
                [id] => 18
                [children] => Array
                    (
                        [0] => Array
                            (
                                [id] => 21
                            )
                        [1] => Array
                            (
                                [id] => 22
                            )
                    )
            )
        [1] => Array
            (
                [id] => 19
            )
        [2] => Array
            (
                [id] => 20
                [children] => Array
                    (
                        [0] => Array
                            (
                                [id] => 26
                            )
                    )
            )
    )
)

到目前为止,这些是我所做的代码,但仍然没有给我正确的结果。

$in = MY_ARRAY
function generateArray($in, $out, $parent = 0, $prev_par = 0){
    foreach($in as $key => $value) {
        $childs = false;
        if(isset($value['children'])){ // if there is children
            $childs = $value['children'];
            unset($value['children']);              
        }
        if($prev_par != $parent){
            $prev_par = $parent;
        }
        else{
            $prev_par = $prev_par;
        }
        $out[] = array($value['id'],$parent,$prev_par);
        if($childs){
            $parent = $value['id'];
            $out = $this->generateArray($childs, $out, $parent, $prev_par);
        }
    }
    return $out;
}

我需要添加一个父 ID,因为现在我可以在不显示正确父 ID 的情况下检索他们的层次结构。

输出可能如下所示。只要我可以添加父 ID。

[id] => 4
[P_id] => 0
[children] => Array
    (
        [0] => Array
            (
                [id] => 18
                [P_id] => 4
                [children] => Array
                    (
                        [0] => Array
                            (
                                [id] => 21
                                [P_id] => 18
                            )
                        [1] => Array
                            (
                                [id] => 22
                                [P_id] => 18
                            )
                    )
            )
        [1] => Array
            (
                [id] => 19
                [P_id] => 4
            )

        [2] => Array
            (
                [id] => 20
                [P_id] => 4
                [children] => Array
                    (
                        [0] => Array
                            (
                                [id] => 26
                                [P_id] => 20
                            )
                    )
            )
    )
)

这里真的需要帮助谢谢大家...

【问题讨论】:

  • 分享你的 $in 数组,它是函数的第一个参数。
  • 肯定会更新它@AHJeebon is MY_ARRAY

标签: php arrays codeigniter sorting hierarchy


【解决方案1】:

您的问题已解决,请检查。函数递归推送 p_id 另一个要点是如果数组包含数字索引,那么 它将跳过推送p_id

功能是:

function generateArray($in, $parent = 0){
  foreach ($in as $key => $value) {
    if(is_numeric($key)){
        $in = $value;
        $out[$key] = generateArray($in, $parent);
    }else{
      $out[$key]=$value;
      if($key=="id"){
        $out['p_id']=$parent;
        $parent=$value;
      }elseif($key=="children"){
        $in = $value;
        $out[$key] = generateArray($in, $parent);
      }
    }
  }
  return $out;
}

工作示例:

$my_array =array(
  'id'=> 4,
  'children'=> Array(
    '0'=> Array(
      'id'=> 18,
      'children'=> Array(
          '0'=> Array(
            'id'=> 21,
          ),
          '1'=> Array(
            'id'=> 22,
          ),
        ),
    ),
    '1'=> Array(
      'id'=> 19,
    ),
    '2'=> Array(
      'id'=> 20,
      'children'=> Array(
        '0'=> Array(
          'id'=> 26,
        ),
      ),
    ),
  )
);

$newarray = generateArray($my_array);
print_r($newarray);

【讨论】:

  • 您对创建该函数有任何参考吗?
  • 我花了一些时间来创建这个函数。但我在这里遵循了一些示例形式:link
  • 感谢您也会检查该链接! :D
  • 嗨!我试图在 [p_id] 之后增加价值,即 [inc]
  • [id] => 4 [P_id] => 0 [inc] => 1 [children] => 数组 ( [0] => 数组 ( [id] => 18 [P_id] = > 4 [inc] => 2 [children] => Array ([0] => Array ([id] => 21 [P_id] => 18 [inc] => 3)) ) [1] => Array ( [id] => 19 [P_id] => 4 [inc] => 5)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-11-22
  • 1970-01-01
  • 2012-11-19
  • 1970-01-01
  • 2020-10-31
  • 2023-03-05
  • 2017-06-10
相关资源
最近更新 更多