Keith Varias
Keith Varias

Reputation: 85

Dynamic Multi Dimensional Array

I have been trying to fureout how to create a dynamic multi dimensional array.

The reason for this is that I want to create a dropdown menu that will be created dynamically from the mysql

Sample database

|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       |

I thought of starting from getting the menu with no parent then put it on an array

$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>";

but after then I'm stuck.

Upvotes: 0

Views: 167

Answers (2)

Vijay Verma
Vijay Verma

Reputation: 3698

I think you are looking for this:

$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>";

Upvotes: 1

Rahul K
Rahul K

Reputation: 413

You should store array in php like this way : This will maybe work for you

$next = 0;

$level = 0;

$sql = mysql_query("SELECT * FROM service WHERE service_parent_id=$next");

$temps = array();

while($temp = mysql_fetch_array($sql))
{
$temps[] = $temp;
}

foreach($temps as $temp)
{
echo $temp['service_id'];
}

Upvotes: 0

Related Questions