请考虑下面的代码
<?php
$a = '';
echo empty($a) ? '' : substr($a, 0, 1); // Prints: ''
echo substr($a, 0, 1); // Prints: ''
哪个"echo"更好?在第一个中,总是检查$a, substr将正常运行,在第二个中,substr内部检查$a,并可能触发一些通知错误。
第一个比较好。
你总是需要防止错误/警告/通知。
虽然我甚至不会为了可读性而使用一行代码
输入字符串必须大于等于一个字符。所以最好事先检查一下。请查看:http://php.net/manual/en/function.substr.php
最重要的部分是区分输入和输出变量:
$input['a'] = '';
$output['a'] = empty($input['a']) ? '' : substr($input['a'], 0, 1);
echo $output['a'];
如何编写验证是你的事情,它应该处理所有的边缘情况,不应该触发任何错误/警告。
Edit:如果你想减少函数调用的数量,下面的代码片段不使用任何函数,只有一种语言结构:
$a = empty($a[0])?'':$a[0];
echo $a;