php isset()使用字符串作为索引的字符串变量

时间:2011-12-03 23:12:51

标签: php arrays isset

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?

2 个答案:

答案 0 :(得分:12)

在字符串上使用[]运算符时,它会期望一个整数值。如果没有,它将转换它。 ['none']已转换为[0],在您的情况下为D

答案 1 :(得分:1)

这是因为PHP是用C语言编写的。所以因为$ aTestArray ['dodaj']是字符串:

$aTestArray['dodaj']['none']

相同
$aTestArray['dodaj'][0]

因为

var_dump( (int) 'none')

是0