【发布时间】:2013-08-30 17:44:19
【问题描述】:
在 PHP 中编写速记的好方法很少。
不太常见但最短的例子:
!isset( $search_order ) && $search_order = 'ASC';
更常见但更长一点:
!isset( $search_order ) ? $search_order = 'ASC' : $search_order = NULL;
我们甚至可以将上面的例子组合成一个惊人的速记:
!isset( $_POST['unique_id'] ) && preg_match( '/^[a-zA-Z0-9]{8}$/', $_POST['unique_id'] ) ? $post_unique_id = $_POST['unique_id'] : $post_unique_id = NULL;
但是我们如何将上面的示例与函数和返回一起使用,示例:
function filter_gender_request($data) {
preg_match('/(fe)?male/i', $data, $data);
isset($data[0]) && return $data[0]; // It doesn't work here with return
}
同时,如果我陈述以下内容,而不是 isset($data[0]) && return $data[0];,那么一切都会按预期进行:
if (isset($data[0]) ) {
return $data[0];
}
我在这里做错了什么?如果第一个也是最短的示例在函数之外完美地工作,那么为什么它不能与 return 一起工作?
是否有可能在 return 中使用速记?
【问题讨论】:
-
您展示的简洁代码可读性较差,因此代码更差。通过写出
if语句,免去您必须破译您原本要写的内容的麻烦。 -
就我个人而言,我使用:
$search_order = (!isset( $search_order ) ? 'ASC' : NULL); -
我不确定这样写能保存什么 - 10 次击键? Here is a good piece of advice to code by.
-
阅读
!isset( $search_order ) && $search_order = 'ASC';有什么问题那么速记有什么意义呢?