@
lizheming 哦,14楼可能我让你理解错了。我想说的其实是不知道为什么这帮家伙会做出这样的决定。
总之,在看不懂源代码的情况下,咱们只能论断这两种可能了。要么就是'f'被估值成了0,要么就是PHP只估值了最后一个Key。
当然或许是我没搞清楚你的意思,但是我测试$string['check'][1]的时候,得到的是not found的结果,所以其实貌似不是只估值了最后一个。而还是$string[0][1]这样的,然后't'[1]不存在。如果只估值最后一个结果也就是[1]的话,那么应该得到的是h。
根据上面的来说,$str['f']['f'],或许只是变成$str[0]['f']了(如果这才是你的正确意思的话),所以这是有可能的。
总之,我发了个帖在PHP的新闻组里,然后有个家伙让我直接用array_key_exists代替。除此之外还没有更详细的回复。
http://news.php.net/php.general/323298然后我就借机抱怨了下
http://news.php.net/php.general/323307不知道会不会有什么进展。
总之我现在有两个方案来搞定这个问题了。
要么就老老实实地用着复杂组合。if (isset($val) && array_key_exists('key', $val) &&
is_string($val['key']) && !empty($val['key'])) {这些。
要么就利用上面的诡计if (isset($val['key'][1]) && is_string($val['key'])) {,这样一样能正确检测,但是数据不但必须不能是空的,还得多于2个字符。
当然还有一个做法是 isset($val['key'], $val['key'][0])。
我决定就这么纠结着用了。一边等邮件列表里的结果,虽然貌似看来不会有啥结果。
另外感谢你一直回复,我散点分给你哈。