如果我们不定义变量,我们会注意到,例如
<?php
echo $a;
但是如果设置为null,我们会得到空字符串? http://sandbox.onlinephpfunctions.com/code/602702f85a54ec4b42bfff22ca25127c4a4c9ace
<?php
$a = null;
echo $a;
$str = DB::find()->select('name')->where(['id' => 1])->one(); //returns null or string name
echo $str;
通常的做法是使用这种方法从DB或某些函数返回值,还是这是未记录的功能?
或者更好地处理像这样的变种?
<?php
echo $a ?: '';
由于
答案 0 :(得分:0)
PHP有一个称为&#34; type juggling&#34;的功能,当某个函数在某些不受支持的数据上调用时,PHP会尝试将数据转换为可用的格式。例如,echo 1234;
将输出1234
,而不是抛出错误(因为1234
不是字符串)。
现在,null
被类型变为空字符串,因为它可能是最合乎逻辑的转换为(null
表示什么都没有的概念)。在转换为字符串部分下,此行为已定义为here。