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

Blu*_*Man 5 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']) );


?>
Run Code Online (Sandbox Code Playgroud)

var_dump将返回:

bool(true)
bool(true)
bool(true)

bool(false)
bool(false)
bool(true)
bool(false)
Run Code Online (Sandbox Code Playgroud)

为什么第六个var_dump()返回TRUE?

Tom*_*rdt 12

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

  • 顺便说一句,这可能会在PHP 5.4中发生变化.当与5.4中的字符串偏移读取相关的变化一起看时,发现这个"特征"是有问题的.目前正在讨论在这种情况下发出通知. (4认同)