【问题标题】:Accessing boolean var as array in PHP return NULL在 PHP 中将布尔变量作为数组访问返回 NULL
【发布时间】:2015-08-28 20:07:20
【问题描述】:

在与我工作的朋友讨论时,我们发现 PHP 有一些奇怪的地方。让我们获取以下代码:

<?php

$leo = false;
$retorno = $leo[0];
var_dump($retorno);

var_dump() 的返回是NULL。现在,问题是,如果我们试图以array 的形式访问bool,为什么会返回NULL?

正确的行为不是抛出异常告诉我们,我们正在尝试以数组形式访问非数组对象(在本例中为布尔变量)?

你们怎么看?

【问题讨论】:

  • 直到 PHP 5.4,如果你试图获取字符串的字符串索引,它会将字符串强制转换为 0 并获取单词的第一个字母,即$s = 'asdf'; echo $s['f'];。现在它会给你一个警告,说偏移量不存在。
  • 那么这个问题我们在哪里?

标签: php arrays boolean


【解决方案1】:

由于您尝试访问的不是字符串,而是布尔值,因此它返回 NULL。来自manual

注意: 使用 [] 或 {} 访问其他类型的变量(不包括实现适当接口的数组或对象)静默返回 NULL。

【讨论】:

    【解决方案2】:

    这是NULL,因为$leo[0] 不是$leo。您还没有将boolstring 分配给$leo[0],因此它是空的,最终导致为NULL

    如果你说:

    $retorno = $leo;
    

    或者

    $leo[0] = false;
    

    然后你会得到你期望的结果。

    【讨论】:

      【解决方案3】:
      $leo = false;
      $retorno = array($leo);
      var_dump($retorno[0]);
      

      试试这个

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-06-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-02-10
        相关资源
        最近更新 更多