与字符串长度范围条件
我现在有这样的代码:与字符串长度范围条件
if (strlen(trim($username) < 4)) {
$error='Username should be between 4 and 10 characters.';
}
if (strlen(trim($username) > 10)) {
$error='Username should be between 4 and 10 characters.';
}
我想降低到一个更简单的语句,像这样的(但显然是行不通的):
if (strlen(trim($username) <4>10))... // parse error
那么你可以这样做:
(strlen(trim($username)) < 4 || strlen(trim($username)) > 10) && $error='Username should be between 4 and 10 characters.';
但它会是一个很多更高效首先定义修剪长度用户名:
$len = strlen(trim($usename));
($len < 4 || $len > 10) && $error = "Bad username";
此语法不正确,你应该使用||
操作:
if (strlen(trim($username)) < 4 || strlen(trim($username)) > 10) {
$error='Username should be between 4 and 10 characters.';
}
在这里你去,使用||
(或)运算符的帮助。
另请注意,我如何将用户名分配给变量,以防止使用您的多次调用的trim()
和strlen()
函数。这只是浪费。
代码
$username = trim('bob');
$username_length = strlen($username);
if ($username_length < 4 || $username_length > 10)
{
echo 'Username should be between 4 and 10 characters.';
}
这种代码膨胀是完全不必要的,完全可以避免的。您可能会追求易读性,但是这种折衷和代码通常比代码简洁和评论更难维护。 – Madbreaks
@Madbreaks我明白了你的观点,并且它有一些有效性,但是请记住像这样的例子本质上是冗长的,所以OP可以在不解码隐藏编码标准的情况下从中学习。在像这样的程序代码中,如果没有(如我所说)对一个函数进行多次不必要的调用,真的没有办法少得多。 – phpisuber01
Op *显式*要求*精简*语法 – Madbreaks
你基本上只检查一个数是否在规定范围内,那么另一个选择是filter_var()
,虽然有点吓人:
if(!filter_var(strlen(trim($username)), FILTER_VALIDATE_INT, array('options' => array('min_range' => 4, 'max_range' => 10))))
{
$error='Username should be between 4 and 10 characters.';
}
为什么'&& '?这是'和'吗? – Alegro
它们基本相同,优先级略有不同。看到这里:http://*.com/questions/2803321/and-vs-as-operator – Madbreaks
ThankYou。解决了 ! – Alegro