다음 배열이 있습니다.
{
"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"
}
}
}
재 귀성을 사용해야합니다.
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] 삭제
몇 마디 만하겠습니다