如何在PHP中检查键是否已设置
如何在PHP中检查数组的键是否已设置 我如何区分两者之间的区别如何在PHP中检查键是否已设置,php,arrays,Php,Arrays,如何在PHP中检查数组的键是否已设置 我如何区分两者之间的区别 $a = [ 'a' => ['key' => 'value'], ['key' => 'value'] ]; 区别在于第一个没有索引号 但是默认值是0(['key'=>'value']) 但是第二个有0个索引('0'=>['key'=>'value']) 注意:检查键是否为数字数组没有意义,因为用户可能会给出数字。您的问题没有答案,因为这两个数组没有区别:
$a = [
'a' => ['key' => 'value'],
['key' => 'value']
];
区别在于第一个没有索引号
但是默认值是0(['key'=>'value'])
但是第二个有0个索引('0'=>['key'=>'value'])
注意:检查键是否为数字数组没有意义,因为用户可能会给出数字。您的问题没有答案,因为这两个数组没有区别:它们只是书写同一事物的不同方式 为了理解我的意思,请考虑这个问题: 如何区分整数
1+3
和整数2+2
之间的差异
当您查看$a=1+3的源代码时代码>和$a=2+2代码>您可以看到差异;但是,当PHP执行该代码时,在这两种情况下都会分配值4
。您不能编写代码来检查$a
并找出为什么它是4,或者它是如何计算的
显示的两个数组文本也是如此。虽然它们在源代码中看起来不同,但一旦执行,PHP将在这两种情况下分配相同的数组值
“规范”版本实际上如下所示:
$a = [
'a' => ['key' => 'value'],
0 => ['key' => 'value']
];
字符串'0'
被视为与整数0
相同的键,未写入索引的条目从0开始按顺序分配整数索引。使用数组\u key\u exists()可以检查键是否存在
$a = [
'a' => ['key' => 'value'],
['key' => 'value']
];
var_dump(array_key_exists('0',$a));
//bool(true)
var_dump(array_key_exists(0,$a));
//bool(true)
键0的存在是因为上述代码只是
$a2 = [
'a' => ['key' => 'value'],
'0' => ['key' => 'value']
];
如果键是一个数字,则它始终存储为整数
foreach($a2 as $key => $val){
var_dump($key);
}
// string(1) "a"
// int(0)
阵列也可以直接进行比较。严格的比较还表明$a和$a2是相同的
var_dump($a === $a2); //bool(true)
您的意思是第二个索引可能没有0
?目前这些都是相同的。当您使用==
比较这两者时,会得到什么结果?如果它们没有被标记为不同,那么你的问题背后的假设是有缺陷的。如果你注意问题的最后一点,就会提到用户可能自己选择了0键,因此通过检查数组的索引是否存在,我们无法确定在数字索引的情况下,它是由用户或PHP自动选择设置的。我的目的是证明这一点。只是拼写不同而已。我也不能用PHP判断$arr=array();或$arr=[];这是我写的。
var_dump($a === $a2); //bool(true)