PHP中的isset()函数有一些奇怪的问题。 让我来表示......。
<?php
$aTestArray = array(
'index' => array(
'index' => 'Główna'
),
'dodaj' => 'Dodaj ogłoszenie',
);
var_dump( isset($aTestArray['index']) );
var_dump( isset($aTestArray['index']['index']) );
var_dump( isset($aTestArray['dodaj']) );
var_dump( isset($aTestArray['index']['none']) );
var_dump( isset($aTestArray['index']['none']['none2']) );
// This unexpectedly returns TRUE
var_dump( isset($aTestArray['dodaj']['none']) );
var_dump( isset($aTestArray['dodaj']['none']['none2']) );
?>
var_dump将返回:
bool(true)
bool(true)
bool(true)
bool(false)
bool(false)
bool(true)
bool(false)
为什么第六个var_dump()返回TRUE?
答案 0 :(得分:12)
在字符串上使用[]
运算符时,它会期望一个整数值。如果没有,它将转换它。 ['none']
已转换为[0]
,在您的情况下为D
。
答案 1 :(得分:1)
这是因为PHP是用C语言编写的。所以因为$ aTestArray ['dodaj']是字符串:
$aTestArray['dodaj']['none']
与
相同$aTestArray['dodaj'][0]
因为
var_dump( (int) 'none')
是0