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

发布于 2024-12-19 15:26:15 字数 765 浏览 1 评论 0原文

我对 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 ?

I have some strange issue with isset() function in PHP.
Let me show... .

<?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']) );


?>

The var_dump's will return:

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

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

Why the sixth var_dump() return TRUE ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

森林很绿却致人迷途 2024-12-26 15:26:15

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

When using the [] operators on a string, it will expect an integer value. If it does not get one, it will convert it. ['none'] is converted to [0] which, in your case, is a D.

失去的东西太少 2024-12-26 15:26:15

这是因为 PHP 是用 C 编写的。因此,由于 $aTestArray['dodaj'] 是字符串:

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

相同

$aTestArray['dodaj'][0]

var_dump( (int) 'none')

0

It is because PHP is written in C. So since $aTestArray['dodaj'] is the string:

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

is the same as

$aTestArray['dodaj'][0]

because

var_dump( (int) 'none')

is 0

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文