2010-04-19 10 views
7

'get'변수의 값을 읽으려고하면 변수가 URL에 설정되지 않은 경우 어떻게됩니까? 예 : 페이지 test.php을 요청하면 해당 파일에서 $_GET['message']의 값을 읽으려고합니다. 이 경우 어떻게됩니까? 단지 값이 ''으로 반환됩니다.PHP가 'get'변수를 읽었거나 설정되지 않았을 수도 있습니다.

이 항상 값을 기대하고있는 경우 입력, 그리고 내가 아는 명심하십시오 난 그냥

$foo = $_GET['bar']; 
if($foo == ''){ 
    // Handle my 'error' 
} 
else 
{ 
    // $foo should now have a value that I can work with 
} 

같은 것을 할 수있다 ''의 값을 받아 들일 아니라고 할 수 있다는 뜻 내가 사용할 수있는 것 isset($_GET['bar'])하지만 그것이 설정되어 있는지 알고 싶지는 않습니다. 상관 없으면 걱정하지 않습니다. 그냥 빈 문자열 이상인 값을 가지고 있는지 신경 써야합니다. 만약 내가 제대로 이해하고

+0

우에서 진정한 부울 값을 얻을하지 않습니다 : PI는 '$ _GET' – thecoshman

답변

7

하는 경우 ("삼항 연산자"를 아래로 스크롤)를 사용할 수있는 경우 해당 기본값을 바꾸려면 값을 실제로 설정했는지 상관 없으면 다음을 사용할 수 있습니다.

if (empty($_GET['bar'])) 
    // value is null, false, 0, '0' or an empty string (including whitespace). 
+0

나는 이것이 나의 필요에 완벽한 해결책이라고 생각한다. '$ _GET [ 'bar']'가 처음에 설정되지 않았다면 에러가 발생하지 않을 것입니다. – thecoshman

+0

문자열을 '0'으로 간주하는 것이 중요하다고 생각하는 것이 중요하다고 생각합니다. 이 페이지를로드 할 ID로 사용하면 문제가 발생할 수 있습니다. 나는 대부분의 데이터베이스가 ID 열의 자동 번호를 1 – thecoshman

+0

참으로 시작한다고 대답하지만 그 대답을 덧붙였다. – elias

0

그것은 : 당신이 시도하고 존재하지 않는 배열 항목에 액세스하는 경우, 결과는 null 될 것

$foo = $_GET['bar']; 
if ((!isset($foo)) || $foo == '') { 
//GET veriable not set, error 
} 
else { 
// GET veriable set, code here. 
} 
+0

를 작성하려하지만이 코드에서 , 나는 여전히'$ foo == '''나는 한번 시도해보고 싶다. – thecoshman

6

.

$foo = $_GET['bar']; //$foo is now null 

그것은 당신이 엄격한 comparsion ===보다는 약한 comparison operator==를 사용하는 경우, 다음 ''이 널 (null)로 간주됩니다 주목할 가치가있다.

위 코드의 단점은 조금 지저분한 색인이없는 배열로 액세스 할 때주의 사항을 생성한다는 것입니다.

따라서 포함 된 값을 변수에 할당하기 전에 값이 설정되어 있는지 확인해야합니다.

if (!isset($_GET['bar'])){ 
    //handle error or assign default value to $foo 
}else{ 
    $foo = $_GET['bar']; 
} 

당신은 디폴트 값을 가지고 있고, $ _GET 값은 당신이 conditional operator

$foo = isset($_GET['bar']) ? $_GET['bar'] : 'default value'; 
1

다음은 어떻게 사용하나요?

측면으로
$foo = (isset($_GET['bar'])) ? $_GET['bar'] : false; 

if(false === $foo){ 
    die('no Foo for your Bar'); 
} 

, 당신은 아마 내가 내 태그에 무엇을했는지, $ _GET

관련 문제