在PHP中访问boolean var作为数组返回NULL

时间:2015-06-12 17:57:50

标签: php arrays boolean

与朋友讨论我的工作,我们发现了一些关于PHP的奇怪之处。让我们得到以下代码:

<?php

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

var_dump()的回复是NULL。现在,问题是,如果我们尝试将bool作为array访问,为什么会返回NULL?

正确的行为是不会抛出异常告诉我们,我们正在尝试将非数组对象作为数组访问(在本例中为boolean var)?

你们对此有何看法?

3 个答案:

答案 0 :(得分:4)

由于您尝试访问的不是字符串,而是布尔值,因此返回using Gtk; public async void asyncProc () { stdout.printf ("STEEP -- 1 --\n"); yield;//Return to Main after the *1 stdout.printf ("STEEP -- 2 --\n"); } public static int main (string[] args) { Gtk.init (ref args); var win = new Window (); win.set_title ("Async Functions Test"); win.set_default_size (512,100); win.set_border_width (12); win.destroy.connect (Gtk.main_quit); var boton = new Button.with_label (" Print in Terminal "); //public delegate void AsyncReadyCallback (Object? source_object, AsyncResult res) callback_finalizacion; boton.clicked.connect (()=> { asyncProc.begin (); //--> Return of YIELD stdout.printf ("STEEP -- B --\n"); asyncProc.callback (); }); win.add (boton); win.show_all (); Gtk.main (); return 0; } 。从manual开始:

  

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

答案 1 :(得分:0)

它是NULL,因为$leo[0]不是$leo。您尚未将boolstring分配给$leo[0],因此它是空的,最终会导致NULL

如果你要放:

$retorno = $leo;

或者

$leo[0] = false;

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

答案 2 :(得分:0)

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

试试这个