2013-12-20 2 views
0

Почему этот код не работает, когда я вызываю его через функцию? Он работает только для внешнего цикла, но внутренний цикл не возвращает значения?Функции PHP вложенный цикл foreach не работает

<?php populateEnrollment($products); ?> 

<?php 
function populateEnrollment($value){ 

    foreach($value as $productid => $prod) if ($productid ==101) 
    { 
     echo '<tr>'; 
     echo '<td width=300 class="tah11">'. $prod["name"] .'</td>' ; 
     echo '<td width=100 class="tah11"><div align="center"> <select name="enrollName"id="enrollNameId" >'; 
      foreach ($prod["membershipType"] as $type) 
      { 
       echo '<option value="' .$type["price"]; $typeIdPrice = $typeId["price"] .'">'.$type["name"] . ' at $' . $typeIdPrice . '</option>'; 
       echo '</select>'; 
       echo '</td>';        
      } // end of foreach membershipTypen 
    } // end of products foreach 
} // end of function populateEnrollment 
?> 
+1

Попробуйте 'print_r ($ prod [" membershipType "]);' проверить, содержит ли оно что-либо –

+0

Функции в основном используются для повторяющихся кодов, я не думаю, что этот код повторяется так зачем использовать функцию? –

+0

Вы отлаживаете что-нибудь до сих пор? Проверьте свой вывод на 'print_r ($ prod [" membershipType "]);' перед запуском внутреннего цикла. – Rikesh

ответ

2

Пожалуйста, добавьте echo </select></td> со стороны вашей внутренней петли foreach.

Также как вы вторя <option> тоже неправильно, пожалуйста, проверьте здесь

Измененный $ TypeID до $ типа .. незначительные обновления опечатка

<?php 
function populateEnrollment($value){ 

    foreach($value as $productid => $prod) if ($productid ==101){ 
    echo '<tr>'; 
    echo '<td width=300 class="tah11">'. $prod["name"] .'</td>' ; 
    echo '<td width=100 class="tah11"><div align="center"> <select name="enrollName"id="enrollNameId" >'; 
    foreach ($prod["membershipType"] as $type){ 
      echo '<option value="' .$type["price"] .'">'.$type["name"] . ' at $' . $type["price"] . '</option>'; 

    } // end of foreach membershipTypen 

    echo '</select>'; 
    echo '</td>';        

    } // end of products foreach 
} // end of function populateEnrollment 
?> 
+0

Это ответ? Можете ли вы добавить свое объяснение, если вы изменили или скорректировали что-либо в коде, отправленном OP. – Rikesh

+0

@Rikesh Too спешите! Я это делаю. : P – Parixit

+0

Это сработало ... поэтому причина, по которой это не сработало, состояла в том, что я не отвечал должным образом

0

Вы можете сделать это, как это

<?php populateEnrollment($products); ?> 

function populateEnrollment($value) 
{ 

    foreach($value as $productid => $prod) 
    { 
     if ($productid ==101) 
     { 
      ?><tr><?php 
      ?><td width=300 class="tah11"><?=$prod["name"]?></td><?php 
      ?><td width=100 class="tah11"><div align="center"> 
       <select name="enrollName"id="enrollNameId" > 
       <?php 
       foreach ($prod["membershipType"] as $type) 
       { 
        echo '<option value="' .$type["price"]; $typeIdPrice = $typeId["price"] .'">'.$type["name"] . ' at $' . $typeIdPrice . '</option>'; 
       } 
      ?></td><?php 
      ?></tr><?php 
     } 
    } 
} 
Смежные вопросы