【问题标题】:How fix the function to avoid error logs (Undefined offset: 2 in ....) - explode如何修复函数以避免错误日志(未定义的偏移量:2 in ....) - 爆炸
【发布时间】:2020-02-10 17:25:29
【问题描述】:

我的函数中有这个:

$str = $_SERVER['REQUEST_URI']; // it gets: /cart/invisible/
$bits = explode('/',$str);
$num = $bits[2];

一个问题是它返回 mi 错误:

PHP 注意:未定义的偏移量:2 in /public_html/wp-content/themes/my-theme/functions.php 在第 3 行。

P。 S.我只是从“可能重复”中检查了信息,甚至没有任何类似的例子。

我该如何解决?

【问题讨论】:

标签: php wordpress


【解决方案1】:

当你分解$str 时,你会得到一个从0 索引到n 的数组作为结果。当您尝试访问不可用的索引时,会发生错误。

$bits = explode('/',$str);
var_dump($bits);

试试var_dump,你可以看到爆炸后的数组索引。检查它是否有索引2

更新

$num = isset( $bits[2] ) ? $bits[2] : "";

【讨论】:

  • 您好,感谢您的回复。我明白了:array(4) { [0]=> string(0) "" [1]=> string(6) "cart" [2]=> string(14) "invisible" [3]=> string(0) "" }
  • 嗨@melvin - 不幸的是没有。我以为我解决了,但不幸的是没有......仍然出现“PHP Notice”。
  • 你能分享一下 $str 里有什么吗?当你var_dump( $bits[1] );时你会得到什么
  • 我得到了这个string(6) "cart" - 但我想得到invisible
  • @NigelRen 我只是建议使用isset 以避免通知,这是最佳实践。
【解决方案2】:

数组索引从0开始,所以你正在调用不存在的$bits[2],因为你的示例将只返回两个元素,尝试使用$bits[1]

【讨论】:

  • 你好。谢谢您的回答。不幸的是,如果我更改为 '$bits[1]' - 我没有得到我的结果。我正在使用它从 url 单词“invisible”中获取 - 但它也可以是不同的单词。
【解决方案3】:

如果你已经 var_dumped $bits 变量并得到了这个:

array(4) { [0]=> string(0) "" [1]=> string(6) "cart" [2]=> string(14) "invisible" [3]=> string(0) "" }

正如您对另一个答案的评论... 那么$bits[2]肯定存在。

当代码从你认为的其他上下文中执行时,必须发出通知。

无论如何,您不应该只是盲目地访问$bits[2]。您应该首先检查它是否存在,如果它不存在,则在您的用例中执行任何适当的操作。 而且你不应该仅仅依赖bits[2]。整个路径标识您的端点。好吧,不确定你的总体目标是什么,但你应该检查它是否是invisible,只有当它是cart 时,也许在像/cart/invisible/xyz/ 这样的无形之后就没有更多的东西了,也许不应该被识别为那个东西。 ..

【讨论】:

  • 嗨,其实你是对的!因为$_SERVER['REQUEST_URI'] 有时会返回/cart/invisibile/?add_it - 这就是它可以返回通知的原因。 :) 谢谢您的回答!下次我会具体说明我的问题!
  • @kibus90 我担心/cart/invisibile/?add_it 会再次按预期产生 $bits[2] 。必须还有另一个上下文...要发出通知,输入字符串(请求 uri)必须最多包含一个 / 字符。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-21
  • 2016-06-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-22
相关资源
最近更新 更多