Foreach给出未定义的变量错误

时间:2013-05-07 05:20:28

标签: php arrays variables foreach undefined

请记住,我已经很晚了,所以这可能只是一个我忽略的非常简单的解决方案。

我有这个foreach声明:

  <? foreach ($entrees as $entree) { ?>
       <li>
           <span class="food-name">
               <?=$entree['name']?>
           </span>
       </li>
  <?}?>

这为$ entree提供了一个未定义的变量错误。

 A PHP Error was encountered

 Severity: Notice

 Message: Undefined variable: entree

 Filename: views/welcome_message.php

 Line Number: 9

我尝试了print_r($entrees);,结果是

 Array ( [0] => Array ( [name] => Lamb [description] => A small leg of lamb ) [1] => Array ( [name] => Ham [description] => Large thing of ham ) ) 1

同样,这可能是一个愚蠢的简单但我已经尝试了30分钟,并且不能让它为我的生活工作。在此先感谢您的帮助。

4 个答案:

答案 0 :(得分:2)

您需要检查多维数组中是否设置了条目名称。这是长版本,因为我不知道PHP中的short_open_tags选项。

<强>代码

<?
$entrees = array();
$entrees[0]['name']="Lamb";
$entrees[0]['description'] ="A small leg of lamb";
$entrees[1]['name']="Ham";
$entrees[1]['description'] ="Large thing of ham";

echo "<ul>\n";
foreach ($entrees as $entree) { 
 if(!empty($entree['name'])){
   echo "<li>";
   echo "<span class=\"food-name\">";
   echo $entree['name'];
   echo "</span>";
   echo "</li>\n";
 }
}
echo "</ul>";

?>

<强>输出

<ul>
<li><span class="food-name">Lamb</span></li>
<li><span class="food-name">Ham</span></li>
</ul>

<强>更新 通过@Arjan了解了一些新内容 - 使用[short_open_tags][1]的原始代码也可以使用if语句,前提是它们在您的构建中已启用。在我的测试中,他们抛出了一个错误,因为我的测试机器使用了较旧版本的PHP。重建后,他们默认工作。

<?=$entree['name']?>

根据此用法中的manual=符号表示echo(),默认情况下在PHP 5.4.1中启用。在搜索Google时,因为他们的搜索使用不同的运算符,我无法找到链接,因为我不知道用法的名称。如果您正在与开发团队进行编程,请确保使用与团队其他成员相同的标记样式。

答案 1 :(得分:2)

您需要在php.ini中将short_open_tag设置为On。这为我修复了它,没有额外的代码。

答案 2 :(得分:0)

使用类似..

   <?   
     if(isset($entrees)) {
     foreach ($entrees as $entree) { ?>
   <li>
       <span class="food-name">
           <?=$entree['name']?>
       </span>
   </li>
      <?} } 
       else { echo 'Any thing You want';
      }
     ?>

答案 3 :(得分:0)

试试这个

<?php 
   if(isset($entrees) && $entrees != NULL){
      foreach($entrees as $entree => $arrData){?>
        <li>
          <span class="food-name">
            <?php echo $arrData['name'] ?>
          </span>
        </li>         
     <?}
   }?>