php非法字符串偏移,非法字符串偏移警告PHP

你试图访问一个string就好像它是一个数组,有一个键-string. string不会明白的。在代码中,我们可以看到问题所在:"hello"["hello"];// PHP Warning:  Illegal string offset 'hello' in php shell code on line 1"hello"[0];

// No errors.array("hello" => "val")["hello"];// No errors. This is *probably* what you wanted.

纵深

让我们看看这个错误:警告:非法字符串偏移“端口”在.。

上面写着什么?上面说我们要用字符串'port'作为字符串的偏移量。就像这样:$a_string = "string";// This is ok:echo $a_string[0]; // secho $a_string[1]; // techo $a_string[2]; // r// ...

// !! Not good:echo $a_string['port'];// !! Warning: Illegal string offset 'port' in ...

这是什么原因?

因为某种原因你期望array,但你有一个string..只是搞混了。也许你的变量被改变了,也许它从来不是array,这真的不重要。

我们能做些什么?

如果我们知我们应该有一个array,我们应该做一些基本的调试,以确定为什么我们没有array..如果我们不知道我们会不会array或string事情变得更棘手了。

我们能,会,可以做的是各种各样的检查,以确保我们没有通知,警告或错误的事情is_array和isset或array_key_exists:$a_string = "string";$an_array = array('port' => 'the_port');if (is_array($a_string) && isset($a_string['port'])) {

// No problem, we'll never get here.

echo $a_string['port'];}if (is_array($an_array) && isset($an_array['port'])) {

// Ok!

echo $an_array['port']; // the_port}if (is_array($an_array) && isset($an_array['unset_key'])) {

// No problem again, we won't enter.

echo $an_array['unset_key'];}// Similar, but with array_key_existsif (is_array($an_array) && array_key_exists('port', $an_array)) {

// Ok!

echo $an_array['port']; // the_port}

有一些微妙的区别isset和array_key_exists..例如,如果$array['key']是null, isset回报false. array_key_exists会检查一下,好吧,钥匙存在.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值