可以用php将
null
转换为string
吗?
举个例子,
$string = null;
到
$string = "null";
在 PHP 7 中,您可以使用 空合并运算符
??
$string = $string ?? 'null';
从 7.4 开始,您可以使用 空合并赋值运算符
??=
$string ??= 'null';
请注意,如果
$string
不存在,它将抑制错误消息。因此,最好使用 is_null()
: 显式测试变量
$string = null;
$string = is_null($string) ? 'null' : $string;
var_dump($string); // string(4) "null"
$string = 'string';
$string = is_null($string) ? 'null' : $string;
var_dump($string); // string(6) "string"
$string = null;
$string = is_null($s) ? 'null' : $string;
var_dump($string); // Warning: Undefined variable $s
我在这里遗漏了什么吗?
if ($string === null) {
$string = 'null';
}
正在想更短的...
您还可以使用三元运算符:
$string = is_null($string) ? 'null' : $string;
您的电话。
var_export可以表示可解析字符串中的任何变量。
if ($string === null)
{
$string = "null";
}
在变量仅是
null
并且字符串/单词“null”需要作为打印/可见文本的狭窄上下文中,使用 null 合并运算符、三元语句或相对冗长的冗长语句并没有什么丑陋/不直观的地方if
。如果您要将值连接到另一个字符串,请务必用括号封装您的逻辑。
相反,对无条件
null
值使用本机函数调用:
NULL
或 null
,var_dump()
的情况下,将在打印值后附加换行符。以下是一系列候选解决方案以及将
null
作为输入时的输出:(演示)
$null = null;
echo 'var_export(): ' . var_export($null, true);
echo "\n";
echo 'var_dump(): ' . (function($v){ ob_start(); var_dump($v); return ob_get_clean(); })($null);
//echo "\n";
echo 'print_r(): ' . print_r($null, true);
echo "\n";
echo 'json_encode(): ' . json_encode($null);
echo "\n";
echo 'serialize(): ' . serialize($null);
echo "\n";
echo 'strval(): ' . strval($null);
echo "\n";
echo 'gettype(): ' . gettype($null);
echo "\n";
echo 'null coalesce: ' . ($null ?? 'null');
echo "\n";
echo 'ternary: ' . ($null === null ? 'null' : $null);
echo "\n";
echo 'condition: ' . (function($v) { if ($v === null) { return 'null'; }})($null);
输出:
var_export(): NULL
var_dump(): NULL
print_r():
json_encode(): null
serialize(): N;
strval():
gettype(): NULL
null coalesce: null
ternary: null
condition: null
作为问题范围的扩展,使用本机函数将非字符串类型数据转换为可打印文本:
json_encode()
,),则
最终,我的建议是使用空合并运算符(因为它直观/自记录、简洁且性能最佳),除非您有令人信服的理由不这样做。
它有最好的解决方案:
$var = null;
$stringNull = json_encode($var);
你可以测试一下
$var = null;
$stringNull = json_encode($var);
$null = json_decode($stringNull, true);
var_dump($stringNull);
var_dump($null);