배열 구조에서 부모의 모든 자식을 얻는 방법

Jaime Alvarez 자리 표시 자 이미지

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] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

배열 내부의 모든 객체 값을 얻는 방법

분류에서Dev

PHP-부모 배열의 모든 자식을 표시하는 방법

분류에서Dev

Laravel에서 문자열의 모든 열 값을 얻는 방법

분류에서Dev

Spark에서 배열 열의 모든 조합을 얻는 방법은 무엇입니까?

분류에서Dev

문자열에서 가능한 모든 문자 조합을 얻는 방법

분류에서Dev

파이썬에서 배열의 모든 조합의 곱을 얻는 방법은 무엇입니까?

분류에서Dev

배열 배열에서 모든 값의 배열을 만드는 방법

분류에서Dev

JavaScript에서 배열의 모든 객체 키를 얻는 방법

분류에서Dev

노드 js의 한 열에서 모든 값을 얻는 방법

분류에서Dev

mysql에서 한 열의 모든 값을 얻는 방법

분류에서Dev

하드 코링 인덱스없이 부모 배열에서 자식 배열의 중복을 지우는 방법

분류에서Dev

C에서 부모 PID가 주어 졌을 때 모든 자식 프로세스의 PID를 얻는 방법

분류에서Dev

SQLite의 한 테이블에서 모든 부모 및 자식 행을 얻는 방법은 무엇입니까?

분류에서Dev

jquery를 사용하여 HTML 양식에서 배열의 모든 ID 요소 값을 얻는 방법

분류에서Dev

char 배열에서 일치하는 모든 문자의 색인을 얻는 방법은 무엇입니까?

분류에서Dev

CUDAFY, 구조체 내부에서 배열을 얻는 방법

분류에서Dev

Safari의 모든 창의 모든 탭에서 모든 열린 URL을 얻는 방법은 무엇입니까?

분류에서Dev

자식 ng-repeat 내에서 부모 범위 배열 / ng-repeat의 인덱스를 얻는 방법

분류에서Dev

특정 순서로 임의 길이의 임의 수 배열의 모든 조합을 얻는 방법

분류에서Dev

다음 구조에서 json 배열의 값을 얻는 방법

분류에서Dev

자식 배열의 내용을 부모 배열로 변환하는 방법

분류에서Dev

모든 형식의 정규식에서 모든 0을 거부하는 방법

분류에서Dev

cakephp / php의 배열에서 모델 이름을 얻는 방법

분류에서Dev

간격없이 배열의 모든 숫자 조합을 얻는 가장 빠른 방법

분류에서Dev

PHP에서 문자열과 동일한 모든 배열 자식을 추출하는 방법

분류에서Dev

문자열의 모든 인용문을 배열에 넣는 방법 (JavaScript)

분류에서Dev

특정 문자열을 배열의 모든 요소에 연결하는 방법

분류에서Dev

Javascript의 모든 인덱스에 대해 일부 배열을 여러 배열로 분할하는 방법

분류에서Dev

n 깊은 밀집 배열의 모든 배열 값을 얻는 방법?

Related 관련 기사

  1. 1

    배열 내부의 모든 객체 값을 얻는 방법

  2. 2

    PHP-부모 배열의 모든 자식을 표시하는 방법

  3. 3

    Laravel에서 문자열의 모든 열 값을 얻는 방법

  4. 4

    Spark에서 배열 열의 모든 조합을 얻는 방법은 무엇입니까?

  5. 5

    문자열에서 가능한 모든 문자 조합을 얻는 방법

  6. 6

    파이썬에서 배열의 모든 조합의 곱을 얻는 방법은 무엇입니까?

  7. 7

    배열 배열에서 모든 값의 배열을 만드는 방법

  8. 8

    JavaScript에서 배열의 모든 객체 키를 얻는 방법

  9. 9

    노드 js의 한 열에서 모든 값을 얻는 방법

  10. 10

    mysql에서 한 열의 모든 값을 얻는 방법

  11. 11

    하드 코링 인덱스없이 부모 배열에서 자식 배열의 중복을 지우는 방법

  12. 12

    C에서 부모 PID가 주어 졌을 때 모든 자식 프로세스의 PID를 얻는 방법

  13. 13

    SQLite의 한 테이블에서 모든 부모 및 자식 행을 얻는 방법은 무엇입니까?

  14. 14

    jquery를 사용하여 HTML 양식에서 배열의 모든 ID 요소 값을 얻는 방법

  15. 15

    char 배열에서 일치하는 모든 문자의 색인을 얻는 방법은 무엇입니까?

  16. 16

    CUDAFY, 구조체 내부에서 배열을 얻는 방법

  17. 17

    Safari의 모든 창의 모든 탭에서 모든 열린 URL을 얻는 방법은 무엇입니까?

  18. 18

    자식 ng-repeat 내에서 부모 범위 배열 / ng-repeat의 인덱스를 얻는 방법

  19. 19

    특정 순서로 임의 길이의 임의 수 배열의 모든 조합을 얻는 방법

  20. 20

    다음 구조에서 json 배열의 값을 얻는 방법

  21. 21

    자식 배열의 내용을 부모 배열로 변환하는 방법

  22. 22

    모든 형식의 정규식에서 모든 0을 거부하는 방법

  23. 23

    cakephp / php의 배열에서 모델 이름을 얻는 방법

  24. 24

    간격없이 배열의 모든 숫자 조합을 얻는 가장 빠른 방법

  25. 25

    PHP에서 문자열과 동일한 모든 배열 자식을 추출하는 방법

  26. 26

    문자열의 모든 인용문을 배열에 넣는 방법 (JavaScript)

  27. 27

    특정 문자열을 배열의 모든 요소에 연결하는 방법

  28. 28

    Javascript의 모든 인덱스에 대해 일부 배열을 여러 배열로 분할하는 방법

  29. 29

    n 깊은 밀집 배열의 모든 배열 값을 얻는 방법?

뜨겁다태그

보관