【问题标题】:Undefined offset error in array index数组索引中未定义的偏移错误
【发布时间】:2015-11-24 18:43:23
【问题描述】:

如果数组的索引为空,我会运行一个 while 循环。但是,当我使用explode 方法时,它会在while ($temptext[1] == null) 中抛出一个未定义的偏移错误。但是,如果我将爆炸线注释掉,它就不再抛出未定义的偏移错误。我对那部分感到困惑,因为 $temptext[1] 无论是否爆炸都是空的。那么为什么其中一个会引发错误,而另一个不会呢?最后,我该如何解决这个问题,这样我就可以使用 while 循环来比较空数组索引而不会引发错误?

$temptext = null;
$count = 1;
$text = ",";
$textX = "Hello there";

while ($temptext[1] == null && $count > 0) {

$count--;
$temptext = explode($text,$textX,2);

}

P.S:我在 PhpFiddle.org 上运行这个 sn-p。

【问题讨论】:

  • 而不是$temptext[1] == null 使用isset($temptext[1])
  • @DannyPhantom 如果我使用它,while 循环甚至都不会运行。
  • 我的错,是!isset($temptext[1])
  • @DannyPhantom 是的。你说得对。现在可以了。你能解释一下为什么吗?原始代码在我的网络服务器上运行良好。这只发生在 PhpFiddle 上。哇。我刚投了反对票。

标签: php arrays explode undefined-index


【解决方案1】:

如果您使用 $array[1] == null 检查数组元素是否存在,php 将抛出 Notice: Undefined offset: 1 ,您应该使用 !isset($array[1]) 代替。否则,您的代码不会包含任何错误。

【讨论】:

  • 为什么我的网络服务器上从来没有发生过这种情况?
  • 可能是因为它关闭了 PHP 通知。
  • 同样,您的代码从未抛出错误并且工作正常,只是注意到您尝试访问的数组元素不存在。 PHP 不知道您打算在使用 $var == null 时检查是否存在,这就是 !isset($var) 存在的原因。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-24
  • 2020-02-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多