2010-04-21 5 views
0
if (isset($_GET['sort_by']) && strlen($_GET['sort_by']) > 0) 
{ 
    $sort_by = $_GET['sort_by']; 
} 
else 
{ 
    $sort_by = 'desc'; 
} 

가 어떻게 덜 라인을 청소기 보이고있다 그래서 .. 내가 도니는 다르게 하나의 라이너를 사랑한다는 것을 다시 작성할 수 있습니다청소기 PHP 코드

답변

5

바로 제거하여 경우 블록 이외의 기본값을 이동하는 첫 번째 옵션 else. if 문에 조건을 그대로 유지하려면 으로 가장 좋으며 조건부 (3 진) 연산자를 사용하여 더 많은 문장을 작성하면 손실되는 선명도가 그대로 유지됩니다.

$sort_by = 'desc' 
if (isset($_GET['sort_by']) && strlen($_GET['sort_by']) > 0){ 
    $sort_by = $_GET['sort_by']; 
} 

미만 0 반환하지 않습니다 나 strlen 있지만, 당신은 > 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"이 비어있는 것으로 처리된다는 것입니다.

에 관계없이이 자주 (널 (null) 및 나 strlen 체크 쿼리 문자열이 바르) 할 경우, 당신은 아마 기능에 포장해야 당신이 그것을 다시 (그리고 Yacoby의 당신을 위해 좋은 한 줄을 가지고) 어떻게
$sort_by = !empty($_GET['sort_by']) ? $_GET['sort_by'] : 'desc'; 
+0

나는 후자를 좋아합니다. –

+0

나는'! empty()'(또는 가지를 바꿔야한다)라고 생각한다. –

+0

@Felix 방금 알아 챘습니다. :) – Yacoby

0

옵션 "기본값"매개 변수).

즉. function getQueryStringVar($key, $defaultValue = '') { ...

+0

감사합니다 신사 (여성 지능에 대한 공격을 전혀 좋아하지 않음) – vick

1
$sort_by = in_array($_GET['sort_by'], array('asc', 'desc')) ? $_GET['sort_by'] : 'desc'; 

이 또한

0

나는, 그러나 Yacoby은 (코드를 청소의 좋은 일을 했어 내가 한 라이너가 자동 청소기 코드를 의미하지 않는다는 것을 추가 할 생각 vailidity뿐만 아니라 그것을 만드는에게 확인 하나의 라이너). 그러나 나는 그 하나의 라이너를 읽으려고 정리할 것입니다 ....

$ sort_by = empty ($ _ GET [ 'sort_by'])? 'desc': $ _GET [ 'sort_by'];

간단히! 기호는 때로는 코드를 읽는 사람이 놓칠 수 있습니다 - 나는 이것이 내 의견으로는 명확한 하나의 라이너라고 생각합니다 :)