Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/230.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 动态多维阵列_Php_Mysql_Multidimensional Array - Fatal编程技术网

Php 动态多维阵列

Php 动态多维阵列,php,mysql,multidimensional-array,Php,Mysql,Multidimensional Array,我一直在努力探索如何创建动态多维数组 原因是我想创建一个下拉菜单,该菜单将从mysql动态创建 样本数据库 |id|menu_name|menu_parent_id| |1 |top menu1| 0 | |2 |top menu2| 0 | |3 |top menu3| 0 | |4 |top menu4| 0 | |5 |sub menu | 2 | |6 |sub me

我一直在努力探索如何创建动态多维数组

原因是我想创建一个下拉菜单,该菜单将从mysql动态创建

样本数据库

|id|menu_name|menu_parent_id|

|1 |top menu1|      0       |

|2 |top menu2|      0       |

|3 |top menu3|      0       |

|4 |top menu4|      0       |

|5 |sub menu |      2       |

|6 |sub menu |      2       |

|7 |sub menu |      5       |

|8 |sub menu |      6       |

|9 |top menu |      0       |
我想从没有父菜单开始,然后把它放在一个数组中

$parentIDs[0]=0;
$tempParentIDs = array();
$childIDs = array();
$menus = array();
$rows = 0;

$rows=0;
foreach($parentIDs AS $value){
$sql = mysql_query("SELECT * FROM service WHERE service_parent_id=$value");
while($temp = mysql_fetch_array($sql)){

    //$tempParentIDs[] = $temp['service_id'];

    //check if parent have child
    $sql2 = mysql_query("SELECT * FROM service WHERE  service_parent_id=$temp[service_id]") or die(mysql_error());
    $rows = mysql_num_rows($sql2);
    if($rows >= 1){
        //This means there is a child
        while($temp2 = mysql_fetch_array($sql2)){
            $childIDs[] = $temp2['service_id'];
        }

        $tempParentIDs[$temp['service_id']] = $childIDs;
        unset($childIDs);
    } else {
        //This means there is no child
    }
}
}

echo "<pre>";
print_r($tempParentIDs);
echo "</pre>";
$parentId[0]=0;
$tempParentId=array();
$childIDs=array();
$menus=array();
$rows=0;
$rows=0;
foreach($parentId作为$value){
$sql=mysql\u查询(“从服务中选择*,其中服务\u父项\u id=$value”);
而($temp=mysql\u fetch\u数组($sql)){
//$tempParentId[]=$temp['service_id'];
//检查父母是否有子女
$sql2=mysql\u query(“从服务中选择*,其中服务\u父项\u id=$temp[service\u id]”)或die(mysql\u error());
$rows=mysql\u num\u rows($sql2);
如果($rows>=1){
//这意味着有一个孩子
而($temp2=mysql\u fetch\u数组($sql2)){
$childIDs[]=$temp2['service_id'];
}
$tempParentId[$temp['service_id']]=$childId;
unset($childIDs);
}否则{
//这意味着没有孩子
}
}
}
回声“;
打印(临时家长ID);
回声“;

但在那之后,我就被卡住了。

您应该以如下方式在php中存储数组: 这可能对你有用

$parentIDs[0]=0;
$tempParentIDs = array();
$childIDs = array();
$menus = array();
$rows = 0;
$multiDimensionalArray = NULL; //here I made change - vijay

$rows=0;
foreach($parentIDs AS $value){
$sql = mysql_query("SELECT * FROM service WHERE service_parent_id=$value");
while($temp = mysql_fetch_array($sql)){

    $tempParentIDs = $temp['service_id']; //here I made change - vijay

    //check if parent have child
    $sql2 = mysql_query("SELECT * FROM service WHERE  service_parent_id=$temp[service_id]") or die(mysql_error());
    $rows = mysql_num_rows($sql2);
    if($rows >= 1){
        //This means there is a child
        while($temp2 = mysql_fetch_array($sql2)){
            $multiDimensionalArray[$tempParentIDs][] = $temp2['service_id']; //here I made change - vijay
        }

       // $tempParentIDs[$temp['service_id']] = $childIDs; //here I made change - vijay
       // unset($childIDs); //here I made change - vijay
    } else {
        //This means there is no child
    }
}
}

echo "<pre>";
print_r($multiDimensionalArray); //here I made change - vijay
echo "</pre>";

我想你正在寻找这个:

$parentId[0]=0;
$tempParentId=array();
$childIDs=array();
$menus=array();
$rows=0;
$multiDimensionalArray=NULL//我在这里做了改变-维杰
$rows=0;
foreach($parentId作为$value){
$sql=mysql\u查询(“从服务中选择*,其中服务\u父项\u id=$value”);
而($temp=mysql\u fetch\u数组($sql)){
$tempParentId=$temp['service_id'];//我在这里做了更改-vijay
//检查父母是否有子女
$sql2=mysql\u query(“从服务中选择*,其中服务\u父项\u id=$temp[service\u id]”)或die(mysql\u error());
$rows=mysql\u num\u rows($sql2);
如果($rows>=1){
//这意味着有一个孩子
而($temp2=mysql\u fetch\u数组($sql2)){
$multiDimensionalArray[$tempParentId][=$temp2['service_id'];//我在这里做了更改-vijay
}
//$tempParentId[$temp['service_id']]=$childId;//我在这里做了更改-vijay
//unset($childIDs);//我在这里做了更改-vijay
}否则{
//这意味着没有孩子
}
}
}
回声“;
打印(多维阵列)//我在这里做了改变-维杰
回声“;

多维数组中还需要什么?@VijayVerma,我只想从mysqlThank@Vijay中创建一个菜单,但是这只会在数组的第二级出现。。如果你看一看它,你会发现其中一条记录实际上在一个子菜单
|8 |子菜单| 6 |
下,这在循环中是不可能的,你需要递归。我明白了。所以不是搜索循环?谢谢你告诉我正确的方向!
$parentIDs[0]=0;
$tempParentIDs = array();
$childIDs = array();
$menus = array();
$rows = 0;
$multiDimensionalArray = NULL; //here I made change - vijay

$rows=0;
foreach($parentIDs AS $value){
$sql = mysql_query("SELECT * FROM service WHERE service_parent_id=$value");
while($temp = mysql_fetch_array($sql)){

    $tempParentIDs = $temp['service_id']; //here I made change - vijay

    //check if parent have child
    $sql2 = mysql_query("SELECT * FROM service WHERE  service_parent_id=$temp[service_id]") or die(mysql_error());
    $rows = mysql_num_rows($sql2);
    if($rows >= 1){
        //This means there is a child
        while($temp2 = mysql_fetch_array($sql2)){
            $multiDimensionalArray[$tempParentIDs][] = $temp2['service_id']; //here I made change - vijay
        }

       // $tempParentIDs[$temp['service_id']] = $childIDs; //here I made change - vijay
       // unset($childIDs); //here I made change - vijay
    } else {
        //This means there is no child
    }
}
}

echo "<pre>";
print_r($multiDimensionalArray); //here I made change - vijay
echo "</pre>";