gpt4 book ai didi

php - isset() 从作为数组访问的字符串变量返回 true,使用任意键

转载 作者:可可西里 更新时间:2023-11-01 12:46:00 25 4
gpt4 key购买 nike

我遇到这样的问题:

$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']) 返回一个 true 值。

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

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

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

关于php - isset() 从作为数组访问的字符串变量返回 true,使用任意键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27827298/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com