【问题标题】:php array explodephp数组爆炸
【发布时间】:2011-01-28 10:03:11
【问题描述】:

我似乎遇到了 php 数组的问题一个有 2 个插槽的阵列。我究竟做错了什么?

$imgURL = "../users/awmayhall/images/andrew1.jpg:../users/awmayhall/images/andrew2.jpg:";
$delimiter=":";
$itemList = array();
$itemList = explode($delimiter, $imgURL);
echo count(itemList);                               

for($i=0;$i<count(itemList);$i++)
{
    echo"<img src='".$imageLocation."' longdesc='".$imageLocation."'/>";
}

【问题讨论】:

  • 顺便说一句。你不需要$itemList = array();。 explode 已经返回一个数组。

标签: php


【解决方案1】:

$ 不见了

echo count($itemList);                              
       for($i=0;$i<count($itemList);$i++)

【讨论】:

    【解决方案2】:

    数组是$itemList,但是在创建它之后你引用了一个不存在的常量itemList。你丢失了$。

    $imgURL = "../users/awmayhall/images/andrew1.jpg:../users/awmayhall/images/andrew2.jpg:";
    $itemList = explode(":", $imgURL);
    foreach ($itemList as $item) {
        echo '<img src="' . $item . '" longdesc="' . $item . '" />';
    }
    

    【讨论】:

      【解决方案3】:

      应该是count($itemList);,你忘记了变量前的$。除此之外,您的代码很好,但数组将包含 3 个元素(一个空元素)。因此,您应该从字符串中删除最后一个 : 或检查每个元素,无论它是否为空。

      此外,您不会在循环中对 $i 做任何事情。要么你做:

      for($i=0;$i<count($itemList);$i++) {
          if(!empty($itemList[$i])) {
              echo"<img src='".$itemList[$i] ."' longdesc='".$itemList[$i]."'/>";
          }
      }
      

      或使用foreach:

      foreach($itemList as $imageLocation) {
          if(!empty($imageLocation) {
              echo "<img src='".$imageLocation."' longdesc='".$imageLocation."'/>";
          }
      }
      

      而且不需要用空数组初始化$itemList。

      如果您想要更清晰地分离 HTML 和 PHP(您应该想要 ;)),请查看 alternative syntax for control structures。

      如何检测此类小错误:

      您应该在开发时将 PHP 的错误报告设置为E_ALL。然后你会收到通知:

      error_reporting(E_ALL);
      echo count(itemList);
      

      注意:使用未定义的常量 itemList - 在 /private/tmp/dashphp.txt 第 4 行假定为“itemList”
      1

      如您所见,PHP 将不存在的常量解释为字符串。 count 将为字符串返回 1:

      如果 var 不是数组或实现了Countable 接口的对象,则返回1。

      【讨论】:

        【解决方案4】:

        您在项目列表中错过了$。

        试试这个:

        <?php
        $imgURL = "../users/awmayhall/images/andrew1.jpg:../users/awmayhall/images/andrew2.jpg:";
        $delimiter=":";
        $itemList = array();
        $itemList = explode($delimiter, $imgURL);
        foreach($itemList as $item)
        {
          echo"<img src='".$item."' longdesc='".$item."'/>";
        }
        ?>
        

        【讨论】:

          【解决方案5】:

          因为您缺少前面的$ 符号。

           echo count(itemList);     
          

          应该是

           echo count($itemList);     
          

          【讨论】:

            【解决方案6】:

            你在echo count(itemList);中错过了$

            【讨论】:

              【解决方案7】:

              PHP 中的变量以美元符号开头。如果你忽略它,它仍然是有效的 PHP,但变量名被解释为一个常量;如果未定义常量,PHP 会将其解释为字符串文字,即使您没有引用它。

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 2019-07-26
                • 1970-01-01
                • 2017-02-18
                • 2015-08-28
                • 2012-08-03
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多