2014-02-11 2 views
0

Когда я пытаюсь вызвать функцию, которую я создал, она ничего не выводит. Если я вставляю код функции напрямую, он работает нормально, но при вызове функции ничего не отображается на экране.Проблема при вызове функции в php

<?php 
    function MRYMENUCALL() { 
     echo '<div class="menu_column Left">'; 
     foreach ($Menuitems as $Menuitem) { 
      if ($Menuitem['Menu'] == 1) { 
       if ($Menuitem['Column'] == 0) { 
        echo '<div class="menu_item" id="' 
         . $Menuitem['id'] 
         . '" onmouseover="menu_expand(this.id);"><div class="menu_name Left">' 
         . $Menuitem['Name'] 
         . '</div><div class="menu_price Right">' 
         . $MenuItem['Price'] 
         . '</div><div class="menu_details Left" id="' 
         . $Menuitem['id'] 
         . '"><div class="menu_description Left">' 
         . $Menuitem['Description'] 
         . '</div>'; 
        if ($Menuitem['Picture'] != NULL){ 
         echo '<div class="menu_picture"><img class="menu_image Right" src="/IMG/Menu/' 
          . $Menuitem['Picture'] 
          . '"></div>'; 
        } 
        echo '</div></div>'; 
       } 
      } 
     } 
     echo '</div>'; 
    } 

    //Left Menu 
    MRYMENUCALL(); 
?> 
+0

Вы проверили свои журналы PHP, чтобы узнать, есть ли что-то не так? –

+2

Мое предположение - $ menuitems не входит в объем функции. Попробуйте поставить «глобальные $ menuitems»; как первая строка вашей функции. – Ben

+0

@Ben Это была моя проблема, спасибо большое! – user3299367

ответ

1

$Menuitems, скорее всего, выходит за рамки этой функции. Если вы перейдете к своим файлам журналов, вы, скорее всего, увидите что-то, говорящее вам об этом. Вам нужно либо определить его внутри этой функции перед его использованием, либо передать в качестве аргумента этой функции.

Кроме того, найдите ваш файл php.ini и измените display_errors на 1. Также установите html_errors на номер 1, пока вы там, и перезапустите apache. Он начнет выводить ошибки на странице, а не тихо в журнал.

0

При попытке запустить свой код, который вы получите (demo):

<div class="menu_column Left"> 
Warning: Invalid argument supplied for foreach() on line 4 
</div> 

Таким образом, вы должны пройти $Menuitems переменную как paremeter из MRYMENUCALL() функции. Попробуйте этот код:

<?php 
// you define $Menuitems somewhere 
// eg. $Menuitems = array(array('Menu' => 1, 'Column' => 0, 'id' => 1, 'Name' => Asd, 'Price' => 2, 'Picture' => asd)); 
     function MRYMENUCALL($Menuitems) { 
      echo '<div class="menu_column Left">'; 
      foreach ($Menuitems as $Menuitem) { 
       if ($Menuitem['Menu'] == 1) { 
        if ($Menuitem['Column'] == 0) { 
         echo '<div class="menu_item" id="' 
          . $Menuitem['id'] 
          . '" onmouseover="menu_expand(this.id);"><div class="menu_name Left">' 
          . $Menuitem['Name'] 
          . '</div><div class="menu_price Right">' 
          . $MenuItem['Price'] 
          . '</div><div class="menu_details Left" id="' 
          . $Menuitem['id'] 
          . '"><div class="menu_description Left">' 
          . $Menuitem['Description'] 
          . '</div>'; 
         if ($Menuitem['Picture'] != NULL){ 
          echo '<div class="menu_picture"><img class="menu_image Right" src="/IMG/Menu/' 
           . $Menuitem['Picture'] 
           . '"></div>'; 
         } 
         echo '</div></div>'; 
        } 
       } 
      } 
      echo '</div>'; 
     } 

     //Left Menu 
     MRYMENUCALL($Menuitems); 
    ?> 

Работа демо: link on Codepad.

Смежные вопросы