简体   繁体   中英

PHP- Multidimensional-Array does not loop through array

I am at the internship and I am developing a HTML table that has milestones and milestoneparts(in this project we call it milestonefase). Each milestone has a bunch of milestonefases.

As example: Milestone99 has milestonefase 10, milestonefase14.

Those data come from two diffrent database tables. My array looks like this:

Array
(
    [milestonesfases] => Array
        (
            [10] => Array
                (
                    [milestonefase_id] => int
                    [milestonefase_titel] => string
                    [milestonefase_milestone_id] => int
                )   
            [14] => Array
                (
                    [milestonefase_id] => int
                    [milestonefase_titel] => string
                    [milestonefase_milestone_id] => int
                )
        )

    [milestone_id] => int
    [milestone_titel] => string
    [client] => string
    [milestone_verkocht_id] => int
)

My question is: How can I loop trough all milestonefases that is connected with milestone 6 (in this case)

My loop looks like this:

foreach ($stones as $milestone)
{
   echo '<tr id="'. $milestone['milestone_id'] . '" class="milestone'. $milestone['milestone_id'] . '">';
     echo '<td>'. $milestone['milestone_id'] . '</td>';
     echo '<td><a href="javascript:keuzeGebruiker(\'milestone'.$milestone['milestone_id']. '\',\''.$milestone['milestone_id'].'\');">' . $milestone['milestone_titel'] . '</a></td>';
     echo '<td>'. $milestone['client'] . '</td>';
   echo '</tr>';

    for ($i = 0; $i < count($milestone['milestonesfases']); $i++)
    {
        echo '<tr>';
         echo '<td>'. $milestone['milestonesfases']['milestonefase_id'] . '</td>';
         echo '<td>'. $milestone['milestonesfases'][10]['milestonefase_titel']  . '</td>';
         echo '<td></td>';
       echo '</tr>';
    }
}

That '10' in my loop needs to be all milestonefase_id's (which is 10, 11, 12, 13, 14, 15 in this milestone).

How can I manage to get all milestonefases.

Attention! it must work for every milestones not only this please

That piece of milestones works but milestonefases does not work.

This is Check for if is array and you can use it using same foreach like @Aron Said:

foreach ($stones as $milestone)
{
   echo '<tr id="'. $milestone['milestone_id'] . '" class="milestone'. $milestone['milestone_id'] . '">';
     echo '<td>'. $milestone['milestone_id'] . '</td>';
     echo '<td><a href="javascript:keuzeGebruiker(\'milestone'.$milestone['milestone_id']. '\',\''.$milestone['milestone_id'].'\');">' . $milestone['milestone_titel'] . '</a></td>';
     echo '<td>'. $milestone['client'] . '</td>';
   echo '</tr>';
if(is_array($milestone['milestonesfases'])){
  foreach ($milestone['milestonesfases'] as $key => $value) {
        echo '<tr>';
       echo '<td>'. $value['milestonefase_id'] . '</td>';
       echo '<td>'. $value['milestonefase_titel']  . '</td>';
       echo '<td></td>';
       echo '</tr>';
    }
  } 
}

Instead of using a for loop,

for ($i = 0; $i < count($milestone['milestonesfases']); $i++)

Do a foreach loop

foreach ($milestone['milestonesfases'] as $milestonesfase) 
{
    echo '<tr>';
    echo '<td>'. $milestonesfase['milestonefase_id'] . '</td>';
    echo '<td>'. $milestonesfase['milestonefase_titel']  . '</td>';
    echo '<td></td>';
    echo '</tr>';
}

please try

foreach ($stones as $milestone)
{
 echo '<tr id="'. $milestone['milestone_id'] . '" class="milestone'. $milestone['milestone_id'] . '">';
 echo '<td>'. $milestone['milestone_id'] . '</td>';
 echo '<td><a href="javascript:keuzeGebruiker(\'milestone'.$milestone['milestone_id']. '\',\''.$milestone['milestone_id'].'\');">' . $milestone['milestone_titel'] . '</a></td>';
 echo '<td>'. $milestone['client'] . '</td>';
 echo '</tr>';

 foreach($milestone['milestonesfases'] as $milestoneRow)
 {
    if($milestoneRow['milestonefase_milestone_id'] == $milestone['milestone_id']) {
         echo '<tr>';
         echo '<td>'. $milestoneRow['milestonefase_id'] . '</td>';
         echo '<td>'. $milestoneRow['milestonefase_titel']  . '</td>';
         echo '<td></td>';
         echo '</tr>';
    }
 }
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM