【问题标题】:PHP - undefined offsetPHP - 未定义的偏移量
【发布时间】:2015-06-29 12:52:24
【问题描述】:

下面的代码在第 5 行有未定义的偏移错误。 我不知道为什么会出现这种情况,我正在与它战斗大约一个小时。 它说它在 for 所在的行中,但正如我所见,语法是正确的:/

<?php
function palindrom($broj) {
    $brojniz=str_split($broj);
    for ($x=0; $x<3; $x++) {
        if ($brojniz[$x] != $brojniz[5-$x]) {return;}
    }
    return($broj);
}

$n=100;
$m=$n;
while ($n<1000) {
    while ($m<1000) {
    $br=$m*$n;
    palindrom($br);
    ++$m;
    }
    $m=100;
    ++$n;
}
?>

【问题讨论】:

  • 您需要添加检查keys是否存在于数组中。
  • 它们确实存在,因为 $br 是 6 位数字
  • 然后打印出来看看是否真的存在。
  • 感谢您的提示。不是6位数。问题解决了!谢谢!

标签: php undefined offset


【解决方案1】:

但我认为语法是正确的

是的,语法是正确的。但运行时值不是。这个语法也是正确的,但是会产生错误:

$x = 1 / 0;

有问题的行正在索引一个数组:

if ($brojniz[$x] != $brojniz[5-$x])

在该循环中,$x 的值从 0 到 2 变化。所以你是这样索引的:

if ($brojniz[0] != $brojniz[5])
if ($brojniz[1] != $brojniz[4])
if ($brojniz[2] != $brojniz[3])

该数组是从 0 到 5 吗?如果不是,那么您引用的是未定义的索引。

【讨论】:

  • 它从 0-5 开始,因为 $br 是 6 个字符的数字,所以当我将该字符串转换为数组时,它应该从 0-5 开始
  • @HrvojeSpajić:你确定吗?对该函数的第一次调用是100*100,即10000。那是五位数。当你调试这个时,错误发生时$br的值是多少?
  • 你是对的!不是5位数字,问题解决了。谢谢!
猜你喜欢
  • 2014-10-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多