一行如果其他


one line if-else

这是一个简单的问题
我认为必须有一种更简单(=代码更少)的方法来完成以下片段:

if (link_validate_url($items[0]['url_value'])) {
} else {
    form_set_error('', 'Not a valid URL.');
}

只需使用!运算符将返回值取反:

if (!link_validate_url($items[0]['url_value'])) {
    form_set_error('', 'Not a valid URL.');
}

当然,你可以把它缩短得更多,但IMO降低了可读性:

if (!link_validate_url($items[0]['url_value']))
    form_set_error('', 'Not a valid URL.');

甚至

if (!link_validate_url($items[0]['url_value'])) form_set_error('', 'Not a valid URL.');

试试这个:

if (! link_validate_url($items[0]['url_value'])) {
    form_set_error('', 'Not a valid URL.');
}

此外,你可能想读一下这篇文章。

您可以(ab)使用三元运算符。

通常是condition ? action if true : action if false;,但您可以将操作留空。

这给你留下了:

link_validate_url($items[0]['url_value'] ?: form_set_error('', 'Not a valid URL.');

编辑:

这是PHP 5.3+

有关此运算符的注释可以在此处找到

if (!link_validate_url($items[0]['url_value'])) {
   form_set_error('', 'Not a valid URL.');
}

或者你可以(ab)使用通用编译器优化,如果第一部分是真正的,则or的第二部分永远不会执行

link_validate_url($items[0]['url_value']) or form_set_error('', 'Not a valid URL.');