2

nullPHPは文字列操作と出力でそれらを同等に扱うため、値または空の文字列を割り当て/連結するためのベストプラクティスは何かを知りたいです:

$lang = 'lang';
$suffix = null;
$lang .= $suffix;

また

$desc = 'name';
$suffix = '';
$desc .= $suffix;

これは、インライン条件の場合にも当てはまります。

<div class="item<?= $is_selected ? ' selected' : null ?>"></div>

また

<div class="item<?= $is_selected ? ' selected' : '' ?>"></div>

全体的なパフォーマンスに影響しないことはわかっていますが、二重引用符または単一引用符を使用する場合と比較できますか?

4

2 に答える 2

3
> php --version
PHP 5.3.12 with Suhosin-Patch (cli) (built: May  9 2012 11:44:31) 
Copyright (c) 1997-2012 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2012 Zend Technologies
    with Suhosin v0.9.33, Copyright (c) 2007-2012, by SektionEins GmbH
php > $start = microtime(true); for( $i = 0; $i < 1000000; ++$i ) { $str = 'foo'; $str .= null; } printf('%.5f', microtime(true) - $start);
0.15258
php > $start = microtime(true); for( $i = 0; $i < 1000000; ++$i ) { $str = 'foo'; $str .= ''; } printf('%.5f', microtime(true) - $start);
0.11397

これを数回実行し、毎回非常に似た結果を得ました。

結論:

  • 空の文字列を文字列に追加するのは、空の文字列に追加するよりもわずかに高速nullです。
  • 数十億回の反復を伴うループ内でこれを行っている場合を除き、パフォーマンスの観点からは問題にならないため、より意味のあるものを使用してください。
于 2012-06-08T17:28:27.813 に答える
2

PHP では、null と空の文字列はまったく同じではありません。

Null (PHP ドキュメントを参照)は基本的に「値なし」であり、何かがまだ設定されていない場合に使用する必要があります。何かが のときnullis_null($var)真になります。

空の文字列は、長さが 0 の文字列のままです。文字列があることがわかっているが内容がない場合は、これを使用する必要があります。

したがって、実際には、どちらを使用するかは状況によって異なります。それらが文字列として表示されるかエコーされると、どちらも何も出力しませんが、内部的にはまだ異なります。私の意見では、この場合は空の文字列を使用します。

<div class="item<?= $is_selected ? ' selected' : '' ?>"></div>
于 2012-06-08T16:33:47.403 に答える