简体   繁体   English

使用php从json代码获取最高级别​​的父级

[英]Getting highest level parent from json code with php

I'm struggling on getting the get the highest id as a separate record in case there is a sub, or more subs out of a json array. 我正在努力获取最高ID作为单独的记录,以防json数组中有一个或多个子。

<?php 
$data = json_decode('
[{"id":122943,    
"children":[{"id":48614}]},
 {"id":10009,
"children":[{"id":74311,
    "children":[{"id":17988}]}]}]');
function parseJsonArray($jsonArray, $parentID = 0) {
$return = array();

foreach ($jsonArray as $subArray) {
    $returnSubSubArray = array();

    if (isset($subArray->children)) {
        $returnSubSubArray = 
        parseJsonArray($subArray->children, $subArray->id);     
    }
$return[] = array('id' => $subArray->id, 'parentID' => $parentID);
$return = array_merge($return, $returnSubSubArray);
}
return $return;
}

$readbleArray = parseJsonArray($data);

$i=0;
foreach($readbleArray as $row){
  $i++;
echo("update cmm_master set parent = '".$row['parentID']."', sort = '".$i."' , master = '????' where PCR = '".$row['id']."' ")."<br>";
echo ("\r\n");
}
?>

With the example above I'm trying the get the master record for each item and the outcome should be: 在上面的示例中,我尝试获取每个项目的主记录,结果应为:

parent = '122943', sort = '1' , master = '122943' where PCR = '122943'
parent = '122943', sort = '2' , master = '122943' where PCR = '48614'
parent = '10009', sort = '3' , master = '10009' where PCR = '10009'
parent = '10009', sort = '4' , master = '10009' where PCR = '74311'
parent = '74311', sort = '5' , master = '10009' where PCR = '17988' 

Thanks for your help or information 感谢您的帮助或信息

Try to use this code: 尝试使用以下代码:

<?php
$data = json_decode('
[
    {"id":122943, "children":[
        {"id":48614}
    ]
    },
    {"id":10009, "children":[
        {"id":74311, "children":[
            {"id":17988}
        ]}
    ]}
]
');

function parseJsonArray($jsonArray, $parentID = 0, $masterID = 0)
{
    $return = array();

    foreach ($jsonArray as $subArray) {
        $returnSubSubArray = array();

        if (isset($subArray->children)) {
            $returnSubSubArray =
                parseJsonArray($subArray->children, $subArray->id, !$parentID ? $subArray->id : $masterID);
        }

        $return[] = array('id' => $subArray->id, 'parentID' => !$parentID ? $subArray->id : $parentID, 'masterID' => !$parentID ? $subArray->id : $masterID);
        $return = array_merge($return, $returnSubSubArray);
    }
    return $return;
}

$readbleArray = parseJsonArray($data);

$i = 0;
foreach ($readbleArray as $row) {
    $i++;
    echo ("update cmm_master set parent = '" . $row['parentID'] . "', sort = '" . $i . "' , master = '".$row['masterID']."' where PCR = '" . $row['id'] . "' ");
    echo("\r\n");
}
?>

It's output looks like: 它的输出看起来像:

update cmm_master set parent = '122943', sort = '1' , master = '122943' where PCR = '122943' 
update cmm_master set parent = '122943', sort = '2' , master = '122943' where PCR = '48614' 
update cmm_master set parent = '10009', sort = '3' , master = '10009' where PCR = '10009' 
update cmm_master set parent = '10009', sort = '4' , master = '10009' where PCR = '74311' 
update cmm_master set parent = '74311', sort = '5' , master = '10009' where PCR = '17988' 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM