PHP再帰取得関連ノード
4511 ワード
$temp = [
[
'id'=>12,
'sid'=>1,
'pid'=>999,
'gid'=>999,
],
[
'id'=>13,
'sid'=>2,
'pid'=>999,
'gid'=>999,
],
];
$found_key = array_search(40489, array_column($userdb, 'uid'));
$meng = new Changeofscene;
$array = $meng->queryChange();
echo "";
print_r($array);exit();
, [
'id' => 64,
'se' => 5,
], [
'id' => 68,
'se' => 5,
]
$data = [[
'id' => 12,
'pid'=> 9,
'se' => 1,
], [
'id' => 13,
'pid'=> 9,
'se' => 1,
]];
$meng = new Changeofscene;
$array = $meng->queryChange();
public function findOne($data,$all){
$newArr = [];
foreach ($data as $k=>$v){
$newArr[] = $v['id'];
$newArr[] = $v['pid'];
$found_keys = array_search($v['pid'], array_column($array, 'value'));
if($found_keys){
$newArr[] = $array[$v['pid']]['sequence'];
}
}
echo "";
print_r($newArr);exit();
}
$data = [ [
'id' => 167,// -> -> -> -> ->
'pid'=> 153,
'se' => 5,
], [
'id' => 12,
'pid'=> 9,
'se' => 1,
], [
'id' => 147,//
'pid'=> 96,
'se' => 5,
]];
//
private function parent_tree_data($list, $child, &$trees = [])
{
$tree = array();
foreach ($list as $k => $row) {
if($row['value'] == $child) {
$trees[] = $row['sequence'];
$this->parent_tree_data($list, $row['sequence'],$trees);
//$row['parent'] = $this->parent_tree_data($list, $row['sequence'],$trees);
//$tree[] = $row;
}
}
return $trees;
}
//
private function children_tree_data($list, $child, &$trees = [])
{
$tree = array();
foreach ($list as $k => $row) {
if ($row['sequence'] == $child) {
$trees[] = $row['value'];
$this->children_tree_data($list, $row['value'], $trees);
//$row['children'] = $this->children_tree_data($list, $row['value'], $trees);
//$tree[] = $row;
}
}
return $trees;
}
//
public function findOne($data, $array)
{
$newArr = [];
foreach ($data as $k => $v) {
$newArr[] = $v['id'];
$newArr[] = $v['pid'];
$newArr = array_merge($newArr,$this->parent_tree_data($array, $v['pid']),$this->children_tree_data($array, $v['id']));
//$newArr[] = $this->parent_tree_data($array, $v['pid']);
//$newArr[] = $this->children_tree_data($array, $v['id']);
}
$newArr = array_unique($newArr);
sort($newArr);
/*echo "";
print_r($newArr);exit();*/
return $newArr;
}