如何通过使用php获取mysql数据以父级和子级方式构建数组
这是我获取mysql记录的代码如何通过使用php获取mysql数据以父级和子级方式构建数组,php,mysql,arrays,parent-child,Php,Mysql,Arrays,Parent Child,这是我获取mysql记录的代码 $parentChildArr=array(); //mysql query for fetching parent and child record $selectparentMenu=mysql_query("SELECT `id`,`item_name`,`menu_type`,`parent` FROM `epic_master_menu`"); if(mysql_num_rows($selectparentMenu)>1) { whi
$parentChildArr=array();
//mysql query for fetching parent and child record
$selectparentMenu=mysql_query("SELECT `id`,`item_name`,`menu_type`,`parent` FROM `epic_master_menu`");
if(mysql_num_rows($selectparentMenu)>1) {
while($fetchparentMenu=mysql_fetch_array($selectparentMenu)) {
$parentChildArr[]=$fetchparentMenu['id'];
$parentChildArr[]=$fetchparentMenu['item_name'];
$parentChildArr[]=$fetchparentMenu['menu_type'];
$parentChildArr[]=$fetchparentMenu['parent'];
}
var_export($parentChildArr); // exporting or printing arrays
//当我导出数组时,我得到这个输出
array ( 0 => '1', 1 => 'Dashboard', 2 => 'item', 3 => '0',
4 => '2', 5 => 'Admission', 6 => 'item', 7 => '0', 8 => '3',
9 => 'Examination', 10 => 'item', 11 => '0', 12 => '4',
13 => 'CET', 14 => 'item', 15 => '0');
但问题是我想这样构建阵列
$newarr=array ( 'dataSource' => array ( 0 => array ( 'id' => '1',
'text' => 'Dashboard', 'expanded' => 'true', 'spriteCssClass' => 'rootfolder',
'items' => array ( 0 => array ( 'id' => '89', 'text' => 'Users',
'expanded' => true, 'spriteCssClass' => 'folder',
'items' => array ( 0 => array ( 'id' => '94', 'text' => 'Users',
'spriteCssClass' => 'html', ), 1 => array ( 'id' => '94',
'text' => 'Users', 'spriteCssClass' => 'html', ), 2 => array (
'id' => '94', 'text' => 'Users', 'spriteCssClass' => 'image' ) ) ) ) ) ));
数据库表视图是。。。
我不知道如何像$newarr那样构建数组。谢谢使用以下代码
$m=0;
if(mysql_num_rows($selectparentMenu)>1) {
while($fetchparentMenu=mysql_fetch_array($selectparentMenu)) {
$parentChildArr[$m][]=$fetchparentMenu['id'];
$parentChildArr[$m][]=$fetchparentMenu['item_name'];
$parentChildArr[$m][]=$fetchparentMenu['menu_type'];
$parentChildArr[$m][]=$fetchparentMenu['parent'];
$m++;
}
未测试,但您需要定义一个结构,然后需要进行递归。。。所以你可以检查我孩子的家长条目在哪里
function structure($data){
return array(
'id' => $data['id'],
'item_name' => $data['item_name'],
'menu_type' => $data['menu_type'],
'parent' => $data['parent'],
'expanded' => false,
'childs' => array()
);
}
function recursiveImport(&$parent, $data){
foreach($parent AS $key => $value){
if($value['id'] == $data['parent']){
$parent[$key]['childs'][] = structure($data);
$parent[$key]['expanded'] = true;
return true;
}
else{
if(count($value['childs']) > 0){
foreach($value['childs'] AS $key2 => $child){
$result = recursiveImport($parent[$key]['childs'][$key2], $data);
if($result === true) return true;
}
}
}
}
return false;
}
$newarr = array();
while($fetchparentMenu=mysql_fetch_array($selectparentMenu)) {
$result = recursiveImport($newarr , $fetchparentMenu);
if($result === false){
$newarr[] = structure($fetchparentMenu);
}
}
//output array
数组(0=>array('id'=>'1','item_name'=>'Dashboard','menu_type'=>'item','parent'=>'0','expanded'=>false,'childs'=>array(),),1=>array('id'=>'2','item_name'=>'Admission','menu type'=>'item','parent'=>'0','expanded'=>false,'childs'=>array()),2=>array('id'=>'3'、'item'=>'检查'、'menu'u-type'=>'item'、'parent'=>'0'、'expanded'=>false、'childs'=>array(),)3=>数组('id'=>'4'、'item'u-name'=>'CET'、'menu-type'=>'item'、'parent'=>'0'、'expanded'=>false、'childs'=>array(),)您的两个数组都有不同的值。请使用实际获得的数组中的值显示预期结果,以便我们能够关联。使用数据库视图显示更多详细信息只会更改三个值一个是id另一个是文本,第三个是展开的。如果项有子项,则展开的值为true,否则为truefalse@Md.SahadatHossain我添加了表视图,请检查out@SankalpMishra请检查gaini已更新请再次阅读问题,然后您将了解我想要什么类型的阵列。如果您编辑了一些错误,这将不会生成您希望的输出,但这是一个很好的展示您应该做什么:)看到我文章的编辑页面,希望我得到所有^^,在stackoverflow的textarea上开发不是一个好主意;)我想问最后一个疑问,那就是我在结构函数中编写了一些静态数组。这个结构函数只是为每个具有相同字段的子/父菜单项构建一个数组:)。。。您可以更改名称,但也需要更改if:if($value['item\u name']==$data['parent'])