이 함수를 배열에서 재귀 적으로 만들기

마틴 볼

다음 배열이 있습니다.

{
  "slider": {
    "effect": {
      "el": ".custom-class"
    },
    "custm": "slider",
    "arrowsEnabled": "1",
    "pagination.el": ".swiper-pagination"
  }
}

점 표기법이 필요한 모든 키는이 기능을 사용합니다.

function convertDotToArray($array)
{
    $newArray = array();
    foreach ($array as $key => $value) {
        $dots = explode(".", $key);
        if (count($dots) > 1) {
            $last = &$newArray[ $dots[0] ];
            foreach ($dots as $k => $dot) {
                if ($k === 0) {
                    continue;
                }
                $last = &$last[$dot];
            }

            $last = $value;
        } else {
            $newArray[$key] = $value;
        }
    }

    return $newArray;
}

그러나 key내가 2 레벨 깊기 때문에 기능이 pagination.el키에 적용되지 않습니다 . 이 함수는 키가 얼마나 깊어도 변환되도록 전달 된 모든 배열을 재귀 적으로 이동해야하므로 배열이 다음과 같이 변경되어야합니다.

{
  "slider": {
    "effect": {
      "el": ".custom-class"
    },
    "custm": "slider",
    "arrowsEnabled": "1",
    "pagination": {
      "el": ".swiper-pagination"
    }
  }
}

Kerkouch

재 귀성을 사용해야합니다.

function convertDotToArray($array)
{
    $newArray = [];

    foreach ($array as $key => $value) {
        if (is_array($value)) {
            $value = convertDotToArray($value);
        }

        $parts = explode('.', $key);
        $pointer = &$newArray;

        foreach ($parts as $part) {
            $pointer = &$pointer[$part];
        }

        $pointer = $value;
    }

    return $newArray;
}

예:

<?php
$jsonData = <<<EOD
{
  "slider": {
    "effect": {
      "el": ".custom-class"
    },
    "custm": "slider",
    "arrowsEnabled": "1",
    "pagination.el.el.el": ".swiper-pagination",
    "deep.deep":{"deep.deep":"deep"}
  }
}
EOD;

$data = json_decode($jsonData, true);
print_r(convertDotToArray($data));

다음 출력을 제공합니다.

Array
(
    [slider] => Array
        (
            [effect] => Array
                (
                    [el] => .custom-class
                )

            [custm] => slider
            [arrowsEnabled] => 1
            [pagination] => Array
                (
                    [el] => Array
                        (
                            [el] => Array
                                (
                                    [el] => .swiper-pagination
                                )

                        )

                )

            [deep] => Array
                (
                    [deep] => Array
                        (
                            [deep] => Array
                                (
                                    [deep] => deep
                                )

                        )

                )

        )

)

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Python : 폴더를 만들고 배열에서 데이터를 재귀 적으로 저장

분류에서Dev

스칼라 : 함수 꼬리를 재귀 적으로 만들기

분류에서Dev

자바 스크립트에서 재귀 적으로 테이블 만들기

분류에서Dev

배열에서 k 번째로 작은 요소를 재귀 적으로 얻기

분류에서Dev

Python : 재귀없이 함수 만들기

분류에서Dev

OCaml에서 재귀 함수 만들기

분류에서Dev

및 배열에서 모든 자식 범주를 재귀 적으로 찾기-PHP

분류에서Dev

재귀 적으로 다차원 배열 만들기

분류에서Dev

이 계승 함수를 재귀 적으로 만들 수있는 방법은 무엇입니까?

분류에서Dev

재귀 적으로 아이들 찾기

분류에서Dev

파이썬에서 재귀 적으로 수학 방정식 풀기

분류에서Dev

이전 숫자없이 재귀 적으로 피보나치 수열 풀기

분류에서Dev

테이블에 대해 재귀 적으로 함수 실행

분류에서Dev

SwiftUI에서 재귀 적으로 메뉴 만들기

분류에서Dev

C # 목록에서 재귀 적으로 TreeView 만들기

분류에서Dev

Laravel에서 재귀 적으로 폴더 만들기

분류에서Dev

Haskell에서 재귀하는 동안 정적 변수 만들기

분류에서Dev

NSString 변수에서 이름으로 가변 배열 만들기

분류에서Dev

10 년 동안 대출이자를 결정하기 위해 PHP에서 재귀 함수 만들기

분류에서Dev

R에서 깊이를 알 수없는 트리를 재귀 적으로 만드는 방법

분류에서Dev

재귀를 사용하여 배열에서 들여 쓰기 목록 만들기

분류에서Dev

이 함수를 재귀 적으로 적용하는 방법

분류에서Dev

이 알고리즘을 재귀 적으로 만들 수 있습니까?

분류에서Dev

재귀 적으로 json 배열 수정

분류에서Dev

현재 함수 내에서 PHP로 테이블 만들기

분류에서Dev

C 프로그래밍의 재귀 함수에서 업데이트 된 동적 열 및 행 크기 2D 배열

분류에서Dev

jquery에서 재귀 적으로 함수를 호출 할 수없는 이유는 무엇입니까?

분류에서Dev

파이썬에서 재귀 적으로 문자열 블록 수집

분류에서Dev

특정 값을 찾기 위해 중첩 배열에서 요소를 재귀 적으로 제거합니다.

Related 관련 기사

  1. 1

    Python : 폴더를 만들고 배열에서 데이터를 재귀 적으로 저장

  2. 2

    스칼라 : 함수 꼬리를 재귀 적으로 만들기

  3. 3

    자바 스크립트에서 재귀 적으로 테이블 만들기

  4. 4

    배열에서 k 번째로 작은 요소를 재귀 적으로 얻기

  5. 5

    Python : 재귀없이 함수 만들기

  6. 6

    OCaml에서 재귀 함수 만들기

  7. 7

    및 배열에서 모든 자식 범주를 재귀 적으로 찾기-PHP

  8. 8

    재귀 적으로 다차원 배열 만들기

  9. 9

    이 계승 함수를 재귀 적으로 만들 수있는 방법은 무엇입니까?

  10. 10

    재귀 적으로 아이들 찾기

  11. 11

    파이썬에서 재귀 적으로 수학 방정식 풀기

  12. 12

    이전 숫자없이 재귀 적으로 피보나치 수열 풀기

  13. 13

    테이블에 대해 재귀 적으로 함수 실행

  14. 14

    SwiftUI에서 재귀 적으로 메뉴 만들기

  15. 15

    C # 목록에서 재귀 적으로 TreeView 만들기

  16. 16

    Laravel에서 재귀 적으로 폴더 만들기

  17. 17

    Haskell에서 재귀하는 동안 정적 변수 만들기

  18. 18

    NSString 변수에서 이름으로 가변 배열 만들기

  19. 19

    10 년 동안 대출이자를 결정하기 위해 PHP에서 재귀 함수 만들기

  20. 20

    R에서 깊이를 알 수없는 트리를 재귀 적으로 만드는 방법

  21. 21

    재귀를 사용하여 배열에서 들여 쓰기 목록 만들기

  22. 22

    이 함수를 재귀 적으로 적용하는 방법

  23. 23

    이 알고리즘을 재귀 적으로 만들 수 있습니까?

  24. 24

    재귀 적으로 json 배열 수정

  25. 25

    현재 함수 내에서 PHP로 테이블 만들기

  26. 26

    C 프로그래밍의 재귀 함수에서 업데이트 된 동적 열 및 행 크기 2D 배열

  27. 27

    jquery에서 재귀 적으로 함수를 호출 할 수없는 이유는 무엇입니까?

  28. 28

    파이썬에서 재귀 적으로 문자열 블록 수집

  29. 29

    특정 값을 찾기 위해 중첩 배열에서 요소를 재귀 적으로 제거합니다.

뜨겁다태그

보관