【问题标题】:Undefined offset Notice in basic PHP script基本 PHP 脚本中的未定义偏移量注意事项
【发布时间】:2015-06-25 05:57:47
【问题描述】:

这是我在 stackoverflow 中的第一个问题。

这是我的代码:

    <form method="post" action="#">
    <input type="text" name="tags">
    <input type="submit" value="Submit">
</form>
<?php if ($_POST && isset($_POST['tags'])) {
        $tags =  explode(', ', $_POST['tags']);
        for ($i=0; $i <= count($tags); $i++) { 
                echo htmlentities("$i : " . $tags[$i]) . "</br>";
        }
    }
?>

代码工作并打印所有由“,”分隔的内容,但它给了我一个通知,它让我发疯了。

通知

注意:未定义的偏移量:C:\xampp\htdocs..\01.PrintTags.php 中的 3 第 16 3 行:

我希望比我更有经验的人能给我一些关于如何解决这个问题的提示,并向我解释为什么会发生这种情况。 提前致谢。

【问题讨论】:

  • 而不是 for 循环中的$i &lt;= count($tags),你应该给$i &lt; count($tags)。这是一个典型的'off-by-one'错误...
  • @fijas 是的,做到了!非常感谢。

标签: php post undefined offset notice


【解决方案1】:

这是因为您从 0 开始循环并结束 array 的总长度。要么从1 开始循环,要么从循环中删除= 符号。以您的方式,循环将比数组中的值运行超过 1 步。用这个

<?php if ($_POST && isset($_POST['tags'])) {
        $tags =  explode(', ', $_POST['tags']);
        for ($i=0; $i < count($tags); $i++) { 
                echo htmlentities("$i : " . $tags[$i]) . "</br>";
        }
    }
?>

最好的方法是你可以为此使用 foreach 。喜欢

foreach($tags as $key=>$val)
{
echo $val;
}

【讨论】:

    猜你喜欢
    • 2023-03-27
    • 1970-01-01
    • 2023-03-13
    • 1970-01-01
    • 1970-01-01
    • 2016-10-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-01
    相关资源
    最近更新 更多