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

前端之家收集整理的这篇文章主要介绍了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'])

猜你在找的PHP相关文章