我遇到这样的问题:
$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'])