与朋友讨论我的工作,我们发现了一些关于PHP的奇怪之处。让我们得到以下代码:
<?php
$leo = false;
$retorno = $leo[0];
var_dump($retorno);
var_dump()
的回复是NULL
。现在,问题是,如果我们尝试将bool
作为array
访问,为什么会返回NULL?
正确的行为是不会抛出异常告诉我们,我们正在尝试将非数组对象作为数组访问(在本例中为boolean var)?
你们对此有何看法?
答案 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
。您尚未将bool
或string
分配给$leo[0]
,因此它是空的,最终会导致NULL
。
如果你要放:
$retorno = $leo;
或者
$leo[0] = false;
然后你会得到你期望的结果。
答案 2 :(得分:0)
$leo = false;
$retorno = array($leo);
var_dump($retorno[0]);
试试这个