lista html / matriz php a matriz multidimensional matriz php
Frecuentes
Visto 66 equipos
0
i have an array with id and parent id and would like to turn it into a multidimentional array via the parent id. the array that i want to change as below:
[0] => Array
(
[menuid] => 395
[circuitname] => summer
[menuname] => news
[parentmenuid] => 0
[displayorder] => 1
)
[1] => Array
(
[menuid] => 2
[circuitname] => summer
[menuname] => Introduction
[parentmenuid] => 395
[displayorder] => 1
)
[2] => Array
(
[menuid] => 521
[circuitname] => summer
[menuname] => Celebrate 100
[parentmenuid] => 2
[displayorder] => 2
)
[3] => Array
(
[menuid] => 80
[circuitname] => summer
[menuname] => hello world
[parentmenuid] => 0
[displayorder] => 2
)
[4] => Array
(
[menuid] => 90
[circuitname] => winter
[menuname] => new page
[parentmenuid] => 0
[displayorder] => 2
)
there is no limit to how deep i want the hierarchy to be. i have seen examples where you can turn an array like mine into a nested html. however i just want to turn my array to a php multidimentional array.
i would like my output to look similar to this:
[0] => Array
(
[menuid] => 395
[circuitname] => contact
[menuname] => Contact Us
[parentmenuid] => 0
[displayorder] => 1
[children] => Array
(
[0] => Array
(
[menuid] => 500
[circuitname] => contact
[menuname] => Contact Us
[parentmenuid] => 395
[displayorder] => 1
[children] => Array
(
)
)
[1] => Array
(
[menuid] => 2
[circuitname] => diocese
[menuname] => Introduction
[parentmenuid] => 395
[displayorder] => 1
[children] => Array
(
)
)
1 Respuestas
0
You could separate first the parents, after separating them, you could use foreach then to reunite the remaining children to their respective parents. Consider this example:
$raw_values = array( array( 'menuid' => 395, 'circuitname' => 'summer', 'menuname' => 'news', 'parentmenuid' => 0, 'displayorder' => 1, ), array( 'menuid' => 2, 'circuitname' => 'summer', 'menuname' => 'Introduction', 'parentmenuid' => 395, 'displayorder' => 1, ), array( 'menuid' => 521, 'circuitname' => 'summer', 'menuname' => 'Celebrate 100', 'parentmenuid' => 2, ' displayorder' => 2, ), array( 'menuid' => 80, 'circuitname' => 'summer', 'menuname' => 'hello world', 'parentmenuid' => 0, 'displayorder' => 2, ), array( 'menuid' => 90, 'circuitname' => 'winter', 'menuname' => 'new page', 'parentmenuid' => 0, 'displayorder' => 2, ),);
// get the parents first
$parents = array();
foreach($raw_values as $key => $value) {
if($value['parentmenuid'] == 0) {
$parents[$value['menuid']] = $value;
unset($raw_values[$key]);
}
}
// then reunite them to their children
foreach($raw_values as $key => $value) {
$parents[$value['parentmenuid']]['children'][] = $value;
}
echo '<pre>';
print_r($parents);
echo '</pre>';
contestado el 28 de mayo de 14 a las 15:05
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas php arrays multidimensional-array menu nested or haz tu propia pregunta.
Could you give an example of the desired output? - Daan
this link seems to be a solution stackoverflow.com/questions/3261228/… - Ahm3d