将本机 null 转换为字符串“null”

问题描述 投票:0回答:6

可以用php将

null
转换为
string
吗?

举个例子,

$string = null;

$string = "null";
php null isnull
6个回答
14
投票

在 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

12
投票

我在这里遗漏了什么吗?

if ($string === null) {
    $string = 'null';
}

正在想更短的...

您还可以使用三元运算符

$string = is_null($string) ? 'null' : $string;

您的电话。


10
投票

var_export可以表示可解析字符串中的任何变量。


0
投票
if ($string === null)
{
  $string = "null";
}

0
投票

在变量仅是

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()
    ,
    ),则
  • 可能是理想的选择
  • 可能会由于截断、编码规则甚至与值的元数据相关的多余字符而导致值突变。

最终,我的建议是使用空合并运算符(因为它直观/自记录、简洁且性能最佳),除非您有令人信服的理由不这样做。


-3
投票

它有最好的解决方案:

$var = null;
$stringNull = json_encode($var);

你可以测试一下

$var = null;
$stringNull = json_encode($var);
$null = json_decode($stringNull, true);
var_dump($stringNull);
var_dump($null);
© www.soinside.com 2019 - 2024. All rights reserved.