if (isset($_GET['sort_by']) && strlen($_GET['sort_by']) > 0)
{
$sort_by = $_GET['sort_by'];
}
else
{
$sort_by = 'desc';
}
我怎样才能重写它,使它看起来更干净,线条更少..我喜欢一个内衬嘿嘿
答案 0 :(得分:5)
第一个选项是将默认值移到if块之外,从而删除else。如果你想在if语句中保留条件,这可能是最好的 如果您使用条件(三元)运算符将其更多地添加到一个参数中,它将保留清晰度。
$sort_by = 'desc'
if (isset($_GET['sort_by']) && strlen($_GET['sort_by']) > 0){
$sort_by = $_GET['sort_by'];
}
虽然strlen不会返回小于0,但您可以删除> 0
$sort_by = 'desc'
if (isset($_GET['sort_by']) && strlen($_GET['sort_by']) ){
$sort_by = $_GET['sort_by'];
}
另一个选择是将所有内容移动到一行并使用条件运算符。不利的一面是,它采取了远远的(在我的选项中),并开始放置太多的一行。
$sort_by = isset($_GET['sort_by']) && strlen($_GET['sort_by']) ? $_GET['sort_by'] : 'desc';
如果您稍微更改了功能以便可以使用empty()
,则由于长度减少,条件运算符变得可用。问题是字符串“0”被视为空。
$sort_by = !empty($_GET['sort_by']) ? $_GET['sort_by'] : 'desc';
答案 1 :(得分:1)
$sort_by = in_array( $_GET['sort_by'], array( 'asc', 'desc' ) ) ? $_GET['sort_by'] : 'desc';
这也检查有效性
答案 2 :(得分:0)
无论你如何重写它(Yacoby都有一个很好的单行程),如果你经常这样做(null和strlen检查查询字符串变量),你应该将它包装在一个带有选项“default”的函数中值“参数”。
即。 function getQueryStringVar($key, $defaultValue = '') { ...
答案 3 :(得分:0)
我想我会补充一点,单行不会自动意味着更清晰的代码,但Yacoby在清理代码方面做得很好(以及使其成为单行代码)。但是我会整理他的一个班轮来阅读......
$ sort_by = empty($ _ GET ['sort_by'])? 'desc':$ _GET ['sort_by'];
仅仅因为!阅读代码的人有时会错过符号 - 我认为这在我看来更清晰:)