<?php
$a = '';
echo empty($a) ? '' : substr($a, 0, 1); // Prints: ''
echo substr($a, 0, 1); // Prints: ''
"エコー" は良いですか?以下のコードを考えてみてください。最初は常に$ aがチェックされ、substrは正常に実行され、2番目にsubstrは$ aを内部的にチェックし、いくつかの通知エラーを引き起こす可能性があります。
<?php
$a = '';
echo empty($a) ? '' : substr($a, 0, 1); // Prints: ''
echo substr($a, 0, 1); // Prints: ''
"エコー" は良いですか?以下のコードを考えてみてください。最初は常に$ aがチェックされ、substrは正常に実行され、2番目にsubstrは$ aを内部的にチェックし、いくつかの通知エラーを引き起こす可能性があります。
最初の方が良いです。
エラー/警告/通知を常に防止する必要があります。
私は読みやすさのために単一行を使用していませんが。
入力文字列は1文字以上でなければなりません。だから前にチェックする方がいいです。 確認してください:http://php.net/manual/en/function.substr.php
最も重要な部分は、あなたが入力と出力の変数の間で異なることがある:あなたが検証を書く方法
$input['a'] = '';
$output['a'] = empty($input['a']) ? '' : substr($input['a'], 0, 1);
echo $output['a'];
はあなたのビジネスである、それはすべてのエッジケースに対処し、トリガすべきでありません任意のエラー/警告。
編集:あなたは、関数呼び出しの回数を減らすことが気になる場合には、次のスニペットは、いずれかの機能を使用しませんが、一つだけ言語が構築:
$a = empty($a[0])?'':$a[0];
echo $a;
私の焦点は、パフォーマンスについてです。 Substrは単なる例です... – AHHP
まず、エラーや次回のパフォーマンスを防ぐために焦点を移すことを検討してください。 – PeeHaa
+1はPeeHaaのコメント、パフォーマンスは相対的ですが、セキュリティはそうではありません。セキュリティには、コードが安全に実行されることが含まれます(渡された入力値に関係なくスクリプトが実行するセキュリティ)。そうでなければ、パフォーマンスは役に立たない。なぜなら、それはまったく実行しないからだ。 – hakre