微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

php – isset()从一个字符串变量返回true,该变量作为带有任何键的数组访问

我遇到这样的问题:
$area="Dhaka";

isset($area); //returns true which is OK

isset($area['division']); //returns true why?

// actually,any array key of area returns true

isset($area['ANY_KEY']);//this is my question 1

isset($area['division']['zilla');//Now it returns false. 

//as I kNow it should returns false but why prevIoUs one was true.

现在,如果我这样做:

$area['division'] = "Dhaka";
isset($area); // returns true which is OK
isset($area['division']); // returns true it's also OK
isset($area['ANY_KEY']); // returns false. I also expect this

isset($area['division']['ANY_KEY']); // returns true why? question #2

基本上我的两个问题都是一样的.

有谁能解释一下?

与现有的每种编程语言一样,字符串存储为字符数组.

如果我做了:

$area = "Dhaka";
echo $area[0];

它会返回D.

我还可以通过以下方式回显整个字符串:

echo $area[0].$area[1].$area[2].$area[3].$area[4];

PHP will also type juggle a string into 0以仅接受整数的方式传递.

通过这样做:

echo $area['division'];

你基本上会这样做:

echo $area[0];

得到D.

这就是为什么isset($area [‘division’])返回一个真值.

为什么$area [‘foo’] [‘bar’](又名$area [0] [0])不起作用?因为$area只是一个单维数组.

在处理可能是字符串或数组的变量时处理此问题的最佳方法是在尝试将变量视为数组之前使用is_array()进行测试:

is_array($area) && isset($area['division'])

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐