2017-10-12 17 views
0

私はインターンシップに参加しています。私はマイルストーンとマイルストーンパートを持つHTMLテーブルを開発しています(このプロジェクトではmilestonefaseと呼んでいます)。各マイルストーンには大きなマイルストーンがあります。例としてPHP-多次元配列はトラフ配列をループしません

Milestone99 10、milestonefase14をmilestonefaseました。

これらのデータは、2つの異なるデータベーステーブルからのものです。 私の配列は次のようになります。

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 
) 

私の質問は:どのように私はループトラフ(この場合)マイルストーン6

私のループに接続されているすべてのmilestonefasesは次のようになります。

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>'; 
    } 
} 

私のループで '10'はすべてmilestonefase_id(このマイルストーンでは10,11,12,13,14,15)である必要があります。

すべてのマイルストーンを取得する方法を教えてください。

注意!それは、マイルストーンの作品が、milestonefasesの一部が動作しないすべてのマイルストーンこの ください

ないだけのために働く必要があります。

解決方法はありますか?お願い助けて。代わりに、forループを使用しての

答えて

1

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

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

ありがとう、これはうまくいった! – Haffoo

0

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>'; 
    } 
} 
} 
+0

いいえ、反復が間違っているため、これは機能しません。 'for($ i = 0; $ i <$ max; ++ $ i)'で連想配列を(安全に)反復することはできません。何をしているのかはキー0 .. $ maxを反復していますが、assoc配列では何でも構いません。このルートを取るには、 'array_values($ milestone ['milestonefases'])'を反復処理する必要があります。そして、forループ内の比較の中に関数呼び出しを入れないでください。時間の経過とともにデータセットが大きくなると、実際には高価なパフォーマンスの問題が発生する可能性があります。代わりに、 'count($ milestone ['milestonefases'])を変数$ maxに分解してください。 –

+0

はい、あなたは正しいです、私は鍵に気付かなかった。 forループの代わりにforeachを使用する必要があります。私の答えを訂正した – Mahesh

1

これが配列の場合のために確認されてみてくださいforeachループを実行してください、あなたはそれを使用することができます@Aronのようにforeachと同じです。

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>'; 
    } 
    } 
}