संभव डुप्लिकेट:
Converting an array from one to multi-dimensional based on parent ID valuesपीएचपी संबंधपरक डेटा
मैं PHP में काम कर रहा हूँ।
मेरे पास निम्न सरणी है जिसमें डेटा (अभिभावक बाल संबंध) संबंध हैं।
Array
(
[5273] => Array
(
[id] => 5273
[name] => John Doe
[parent] =>
)
[6032] => Array
(
[id] => 6032
[name] => Sally Smith
[parent] => 5273
)
[6034] => Array
(
[id] => 6034
[name] => Mike Jones
[parent] => 6032
)
[6035] => Array
(
[id] => 6035
[name] => Jason Williams
[parent] => 6034
)
[6036] => Array
(
[id] => 6036
[name] => Sara Johnson
[parent] => 5273
)
[6037] => Array
(
[id] => 6037
[name] => Dave Wilson
[parent] => 5273
)
[6038] => Array
(
[id] => 6038
[name] => Amy Martin
[parent] => 6037
)
)
मैं इसे इस JSON प्रारूप में होने की जरूरत है:
{
"id":"5273",
"name":"John Doe",
"data":{
},
"children":[
{
"id":" Sally Smith",
"name":"6032",
"data":{
},
"children":[
{
"id":"6034",
"name":"Mike Jones",
"data":{
},
"children":[
{
"id":"6035",
"name":"Jason Williams",
"data":{
},
"children":[
{
"id":"node46",
"name":"4.6",
"data":{
},
"children":[
]
}
]
}
]
},
{
"id":"6036",
"name":"Sara Johnson",
"data":{
},
"children":[
]
},
{
"id":"6037",
"name":"Dave Wilson",
"data":{
},
"children":[
{
"id":"6038",
"name":"Amy Martin",
"data":{
},
"children":[
]
}
]
}
]
}
]
}
मैं जानता हूँ कि मैं एक बहुआयामी सरणी बना सकते हैं और json_encode के माध्यम से इसे चलाने के लिए() की जरूरत है। मुझे यह भी विश्वास है कि ऐसा करने के लिए उपयोग की जाने वाली इस विधि को रिकर्सिव होने की आवश्यकता है क्योंकि वास्तविक दुनिया के डेटा में अज्ञात स्तर हो सकते हैं।
मुझे अपने कुछ दृष्टिकोण दिखाने में खुशी होगी लेकिन उन्होंने काम नहीं किया है।
क्या कोई मेरी मदद कर सकता है?
मुझे अपना काम साझा करने के लिए कहा गया था। मैंने यही कोशिश की है, लेकिन मुझे यह नहीं मिला है कि मुझे पता नहीं है कि यह कितना उपयोगी है।
मैंने केवल संबंधों की एक सरणी बनाई।
foreach($array as $k => $v){
$relationships[$v['id']] = $v['parent'];
}
मुझे लगता है कि (एक और एसओ पद पर आधारित) एक नई बहुआयामी सरणी बनाने के लिए इस संबंधपरक डेटा का इस्तेमाल किया। इस मैं सही "बच्चों" लेबल आदि
$childrenTable = array();
$data = array();
foreach ($relationships as $n => $p) {
//parent was not seen before, put on root
if (!array_key_exists($p, $childrenTable)) {
$childrenTable[$p] = array();
$data[$p] = &$childrenTable[$p];
}
//child was not seen before
if (!array_key_exists($n, $childrenTable)) {
$childrenTable[$n] = array();
}
//root node has a parent after all, relocate
if (array_key_exists($n, $data)) {
unset($data[$n]);
}
$childrenTable[$p][$n] = &$childrenTable[$n];
}
unset($childrenTable);
print_r($data);
आपके द्वारा पोस्ट किया गया प्रारंभिक प्रारूप * एक बहुआयामी सरणी है। क्या वह जेसन एन्कोड में काम नहीं करना चाहिए? –
बेन रूक्स, हां, यह एक बहुआयामी सरणी है लेकिन यह JSON उत्पन्न करने के लिए सही प्रारूप में नहीं है। – maestrojed
आपने क्या प्रयास किया है? अपना कोड पोस्ट करें कि आप सरणी तैयार कर रहे हैं। – Sanjay