php 将native null转换为字符串“null”

tkclm6bt  于 5个月前  发布在  PHP
关注(0)|答案(6)|浏览(54)

可以用php将null转换为string吗?
比如说,

$string = null;

字符串

$string = "null";

ie3xauqp

ie3xauqp1#

在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

klsxnrf1

klsxnrf12#

我是不是漏掉了什么?

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

字符串
我在想短一点的。
也可以使用a ternary operator

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


你的电话

4ktjp1zp

4ktjp1zp3#

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

rqqzpn5f

rqqzpn5f4#

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

字符串

tnkciper

tnkciper5#

在狭义的上下文中,变量仅为null,字符串/单词“null”需要作为打印/可见文本,使用null合并运算符,三元语句或相对冗长的if并没有什么丑陋/不直观的地方。如果您将值连接到另一个字符串,请确保使用括号封装逻辑。
相反地,对无条件的null值使用本机函数调用:

  • 对于不太熟悉该技术的人来说将不太直观,
  • 性能较低,但并不明显--除非你正在做的事情是数百万次的量级,
  • 将有自己独特的行为,决定打印NULL还是null
  • var_dump()的情况下,一个新行被附加到打印的值。

下面是一组候选解和它们在输入null时的输出:(Demo

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

最后,我的建议是使用空合并操作符(因为它直观/自文档化,简洁,并且性能最高),除非你有令人信服的理由不这样做。

o8x7eapl

o8x7eapl6#

它有最佳解决方案:

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

字符串
你可以测试它,

$var = null;
$stringNull = json_encode($var);
$null = json_decode($stringNull, true);
var_dump($stringNull);
var_dump($null);

相关问题