mysql 쿼리와 일부 변환 후 다음 배열이 있습니다.
$users = Array
(
[0] => Array
(
[id] => 1
[parent_id] =>
[token] => ADCUN5EW5FAR
[token_parent_id] =>
[name] => NODE
[payment] => 1
)
[1] => Array
(
[id] => 2
[parent_id] => 1
[token] => N9KWQQV1W1K5
[token_parent_id] => ADCUN5EW5FAR
[name] => NODE 1
[payment] => 1
)
[2] => Array
(
[id] => 4
[parent_id] => 2
[token] => 5NAKJYKUD1X2
[token_parent_id] => N9KWQQV1W1K5
[name] => NODE 1-1
[payment] => 0
)
[3] => Array
(
[id] => 5
[parent_id] => 4
[token] => 8EMAEK9XFRFZ
[token_parent_id] => 5NAKJYKUD1X2
[name] => NODE 1-1-1
[payment] => 0
)
[4] => Array
(
[id] => 6
[parent_id] => 4
[token] => Z9XFZ2EZ38VR
[token_parent_id] => 5NAKJYKUD1X2
[name] => NODE 1-1-2
[payment] => 0
)
[5] => Array
(
[id] => 3
[parent_id] => 1
[token] => R751DRTJ1EKW
[token_parent_id] => ADCUN5EW5FAR
[name] => NODE 2
[payment] => 0
)
[6] => Array
(
[id] => 7
[parent_id] => 3
[token] => DR6NGPDAZN25
[token_parent_id] => R751DRTJ1EKW
[name] => NODE 2-1
[payment] => 0
)
);
주어진 ID가있는 경우 ID 아래의 항목에 대해 다음 배열 구조를 만들어야합니다. 예를 들어 주어진 ID가 1이면 배열이 필요합니다.
Array
(
[ADCUN5EW5FAR] => Array
(
[node] => Array
(
[id] => 1
[parent_id] =>
[token] => ADCUN5EW5FAR
[token_parent_id] =>
[name] => NODE
[payment] => 1
)
[children] => Array
(
[N9KWQQV1W1K5] => Array
(
[node] => Array
(
[id] => 2
[parent_id] => 1
[token] => N9KWQQV1W1K5
[token_parent_id] => ADCUN5EW5FAR
[name] => NODE 1
[payment] => 1
)
[children] => Array
(
[5NAKJYKUD1X2] => Array
(
[node] => Array
(
[id] => 4
[parent_id] => 2
[token] => 5NAKJYKUD1X2
[token_parent_id] => N9KWQQV1W1K5
[name] => NODE 1-1
[payment] => 0
)
[children] => Array
(
[8EMAEK9XFRFZ] => Array
(
[node] => Array
(
[id] => 5
[parent_id] => 4
[token] => 8EMAEK9XFRFZ
[token_parent_id] => 5NAKJYKUD1X2
[name] => NODE 1-1-1
[payment] => 0
)
[children] => Array
(
)
)
[Z9XFZ2EZ38VR] => Array
(
[node] => Array
(
[id] => 6
[parent_id] => 4
[token] => Z9XFZ2EZ38VR
[token_parent_id] => 5NAKJYKUD1X2
[name] => NODE 1-1-2
[payment] => 0
)
[children] => Array
(
)
)
)
)
)
)
[R751DRTJ1EKW] => Array
(
[node] => Array
(
[id] => 3
[parent_id] => 1
[token] => R751DRTJ1EKW
[token_parent_id] => ADCUN5EW5FAR
[name] => NODE 2
[payment] => 0
)
[children] => Array
(
[DR6NGPDAZN25] => Array
(
[node] => Array
(
[id] => 7
[parent_id] => 3
[token] => DR6NGPDAZN25
[token_parent_id] => R751DRTJ1EKW
[name] => NODE 2-1
[payment] => 0
)
[children] => Array
(
)
)
)
)
)
)
)
이 새로운 배열을 얻으려면 1과 다른 하나의 ID에서 시작하지만 원래 $ users 배열을 사용하여 코드를 작성해야합니다. 누군가 나를 도울 수 있습니까? 미리 감사드립니다.
그것은 매우 아름답지는 않지만 여전히 작고 작동합니다.
$users = array(
array
(
'id' => 1,
'parent_id' => '',
'token' => 'ADCUN5EW5FAR',
'token_parent_id' =>'' ,
'name' => 'NODE',
'payment' => 1
),
array
(
'id' => 2,
'parent_id' => 1,
'token' => 'N9KWQQV1W1K5',
'token_parent_id' =>'ADCUN5EW5FAR' ,
'name' => 'NODE 1',
'payment' => 1
),
array
(
'id' => 4,
'parent_id' => 2,
'token' => '5NAKJYKUD1X2',
'token_parent_id' =>'N9KWQQV1W1K5' ,
'name' => 'NODE 1-1',
'payment' => 0
),
array
(
'id' => 5,
'parent_id' => 4,
'token' => '8EMAEK9XFRFZ',
'token_parent_id' =>'5NAKJYKUD1X2' ,
'name' => 'NODE 1-1-1',
'payment' => 0
),
array
(
'id' => 6,
'parent_id' => 4,
'token' => 'Z9XFZ2EZ38VR',
'token_parent_id' =>'5NAKJYKUD1X2' ,
'name' => 'NODE 1-1-2',
'payment' => 0
),
array
(
'id' => 3,
'parent_id' => 1,
'token' => 'R751DRTJ1EKW',
'token_parent_id' =>'ADCUN5EW5FAR' ,
'name' => 'NODE 2',
'payment' => 0
),
array
(
'id' => 7,
'parent_id' => 3,
'token' => 'DR6NGPDAZN25',
'token_parent_id' =>'R751DRTJ1EKW' ,
'name' => 'NODE 2-1',
'payment' => 0
)
);
function getBranches($arr, $id) {
$childrenArr = array();
foreach($arr as $item) {
if ($item['parent_id']==$id) {
$childrenArr[] = $item;
}
}
return $childrenArr;
}
function getBranch($arr, $id) {
$branch = array();
foreach($arr as $item) {
if ($item['id'] == $id) {
$branch[$item['token']]['node'] = $item;
$branches = getBranches($arr, $id);
$children = array();
foreach($branches as $child) {
$b = getBranch($arr, $child['id']);
foreach ($b as $token => $child) {
$children[$token] = $child;
}
}
$branch[$item['token']]['children'] = $children;
break;
}
}
if (count($branch)==0) echo 'WARNING '.$id;
return $branch;
}
print_r(getBranch($users,1));
print_r(getBranch($users,4));
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다