2014-08-28 2 views
1

현재 $_GET 또는 $_POST 속성이 empty()을 사용하여 설정되어 있는지 확인합니다. 이처럼 :

$status = null; 

if (!empty($_GET['foo'])) { 
    $status = $_GET['foo']; 
} 

나는 내가, empty와 지금 뭘하는지처럼 또한 정의되지 않은 인덱스를 말하는 통지를 인쇄 방지, PHP에 내장 같은 일을하고의 더욱 간결 방법이 상상한다. 아마 이런 식으로 뭔가 :

$status = something($_GET['foo']); 

을하거나, 어쩌면 난 그냥 통지를 무시하고 수행해야합니다

$status = $_GET['foo']; 
+0

'empty()'는주의를 얻지 못합니다. 설명서를 참조하십시오 : 변수가 존재하지 않으면'empty()가 경고를 생성하지 않습니다. ' – jeroen

+0

$ status =! empty ($ _GET [ 'foo'])? $ _GET [ 'foo'] : null; –

+0

그냥 명확히하기 위해, 나는 현재 통지를주지 않기 때문에 현재 '빈'을 사용하고 있습니다. 나는 나에게 너무주의를주지 않는 더 조밀 한 무언가를 원한다. – tau

답변

2

나는 문제가 정의되지 않은 변수에 대한 경고를 생성하지 않습니다 empty()으로 무엇인지 잘 모르겠지만, 한 줄에 원하는 경우에, 당신은 삼항 표현 사용할 수 있습니다

$status = empty($_GET['foo']) ? null : $_GET['foo']; 
+0

나는 * 또한 * 고지문을 출력하지 않는다는 것을 의미했습니다. 지금 비어있는 것을 사용하는 이유는 그렇지 않기 때문입니다. 나는 또한 더 컴팩트 한 것도 원한다. 죄송합니다. – tau

+1

@tau 이것은 컴팩트 한 크기입니다. – jeroen

+1

오케이, 나는 그것을 두려워했다. 고맙습니다! – tau

-2

당신은 사용하여 경고를 억제 할 수 @.

$status = @$_GET['foo']; 
0

을 그냥 GET하려는 경우

$status = isset($_GET['foo'])?$_GET['foo']:NULL; 

또는이와 POST : 단지 GET이 방법에 대해 당신이 원하는 경우

$status = isset($_GET['foo'])?$_GET['foo']:(isset($_POST['foo'])?NULL); 
0

$ _GET 배열의 키가 존재하는지 항상 확인하고 그렇지 않은 경우 변수를 null로 설정할 수 있습니다. 결코 표를 던지지 않을 것이다.

$status = array_key_exists('foo', $_GET) ? $_GET['foo'] : null;