Php 动态多维阵列
我一直在努力探索如何创建动态多维数组 原因是我想创建一个下拉菜单,该菜单将从mysql动态创建 样本数据库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
|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>";