배열에서 json으로 변환하려고 할 때 PHP에서이 문제가 발생합니다 jSon 형식으로 인코딩 할 배열을 만드는 재귀 함수가 있습니다.JSON 문제에 대한 도움이 필요합니다
function trataArray($data) {
$itemsByReference = array();
// Build array of item references:
foreach ($data as $key => &$item) {
$itemsByReference[$item['id']] = &$item;
// Children array:
$itemsByReference[$item['id']]['children'] = array();
// Empty data class (so that json_encode adds "data: {}")
$itemsByReference[$item['id']]['data'] = new StdClass();
}
// Set items as children of the relevant parent item.
foreach ($data as $key => &$item)
if ($item['parent_id'] && isset($itemsByReference[$item['parent_id']]))
$itemsByReference [$item['parent_id']]['children'][] = &$item;
// Remove items that were added to parents elsewhere:
foreach ($data as $key => &$item) {
if ($item['parent_id'] && isset($itemsByReference[$item['parent_id']]))
unset($data[$key]);
}
// Encode:
return $data;
} 내 JSON 그게 전부
하지만이 JSON은이 오류 :
{
"0": // Problem here... T_T
{
"id": 1,
"parent_id": null,
"name": "lorem ipsum",
"children": [
{
"id": 2,
"parent_id": 1,
"name": "lorem ipsum1",
"children": [
{
"id": 4,
"parent_id": 2,
"name": "lorem ipsum3",
"children": [],
"data": {}
}
],
"data": {}
},
{
"id": 3,
"parent_id": 1,
"name": "lorem ipsum2",
"children": [
{
"id": 5,
"parent_id": 3,
"name": "lorem ipsum4",
"children": [],
"data": {}
}
],
"data": {}
}
],
"data": {}
},
"5": // And here... T_T
{
"id": 6,
"parent_id": null,
"name": "lorem ipsum5",
"children": [],
"data": {}
}
}
문자열 내 기능 그게 전부
$data = array(
array('id' => 1, 'parent_id' => null, 'text' => 'lorem ipsum'),
array('id' => 2, 'parent_id' => 1, 'text' => 'lorem ipsum1'),
array('id' => 3, 'parent_id' => 1, 'text' => 'lorem ipsum2'),
array('id' => 4, 'parent_id' => 2, 'text' => 'lorem ipsum3'),
array('id' => 5, 'parent_id' => 3, 'text' => 'lorem ipsum4'),
array('id' => 6, 'parent_id' => null, 'text' => 'lorem ipsum5'),
);
: 배열의
"0": 및 "5": ca json 마크 업에서 오류를 사용합니다. 나는 그것을 preg_replace를 사용하여 제거하려고 시도했지만 정규 표현식으로 작업하는 것은 끔찍한 일이라고 생각했습니다. 누군가 그것으로 나를 도울 수 ... : D고마워! D 그리고 내가 아이디어와 함께, 플러그인 및 ENCODE에서 JSON을 얻을 :
내가 생각을했다 ... :)
내가 테스트 할 수있는 방법을 찾고 있었다 똥 ... 돼고 그것을 하나의 배열로 만들고 JSON Encode에 올바른 것을주기 위해 무엇을 제공해야하는지 알아보기 위해 인쇄하십시오.
그들을 그가 그것을 재현 : 개체에 대한
Array
(
[0] => stdClass Object
(
[id] => 1
[text] => City
[children] => Array
(
[0] => stdClass Object
(
[id] => 11
[text] => Wyoming
[children] => Array
(
[0] => stdClass Object
(
[id] => 111
[text] => Albin
)
[1] => stdClass Object
(
[id] => 112
[text] => Canon
)
[2] => stdClass Object
(
[id] => 113
[text] => Egbert
)
)
)
[1] => stdClass Object
(
[id] => 12
[text] => Washington
[state] => closed
[children] => Array
(
[0] => stdClass Object
(
[id] => 121
[text] => Bellingham
)
[1] => stdClass Object
(
[id] => 122
[text] => Chehalis
)
[2] => stdClass Object
(
[id] => 123
[text] => Ellensburg
)
[3] => stdClass Object
(
[id] => 124
[text] => Monroe
)
)
)
)
)
)
json으로 그것의 기초를, 내가 그 거기에 버그를 배열 작업 및 변환 tryng IM, 데이터의 객체 생각합니다.
누군가가 그와 같은 것을 만드는 법을 알고 있습니까? ... 고마워를 생각할 수있는 난에 그냥 방법 ...
: DDD jslint.com에 따르면
을 json으로 변환하는 대신 루프를 사용하여 각 반복을 json으로 변환합니다. – Ibu
p.s. 'foreach()'에 대한 참조를 사용하면 매우 조심해야합니다. http://www.php.net/manual/en/control-structures.foreach.php#101425 – ken
"1"과 "5"를 제거하면 JSON이 유효하지 않게됩니다. 하나의 데이터 구조를 완전히 다른 구조로 변환하는 대신 JSON 데이터 구조를 원하는 방식으로 원래의 데이터 구조를 구축하는 것이 어떻습니까? – dqhendricks