2011-11-09 2 views
2

문제이며, 절대 아무것도 출력되지 않습니다. 중고 코드 !empty 대신의 PHP는 isset() 대! 빈은()

$fname = !empty($_POST['fname']) ? $_POST['fname'] : 'sample'; 
die($fname); 

출력 sample을 점점 채워지지 FNAME 입력 필드에 제출, 후.

+0

다른 사람이 http://stackoverflow.com/questions/1219542/in-를 참조 할 수 있습니다

$_POST['fname'] = ""; isset($_POST['fname']) == true; $_POST['fname'] = ""; !empty($_POST['fname']) == false; 

당신이 할 수있는 것은 $_POST 배열 대신 isset에 확인 array_key_exists를 사용하다 어디에서 사용할 것입니까? 비공개 및 비어 있습니까? rq = 1 – ErichBSchulz

+2

RTFM은 *** 아닙니다 *** 유효한 대답입니다. – iconoclast

답변

5

와 함께 제출하면 따라서 출력 할 아무것도 의미하지, 그냥 빈하지만 전송입니다!

POST에서 GET으로 양식 방법을 변경하면 직접 볼 수 있습니다.

8

isset()은 변수가 NULL인지 여부를 확인하고 배열에서 정의되지 않은 색인에 액세스하는 경우 (is_null()과 달리) E_NOTICE 오류를 발생시키지 않습니다.

변수가 빈 문자열을 포함하고 있는지 확인하십시오!

+1

'is_null()'이 null인지 아닌지를 확인하고'isset()'가 설정되어 있는지를 검사 할 수도 있습니다. 슬프게도, 당신의 설명은 정확합니다. –

2

무엇이 질문입니까?

isset()$_POST['key']에 사용하면이 상황에서 변수 자체가 설정되어 양식에서 전달되므로 true이 반환됩니다. $_POST['fname'] 값을 $fname 변수에 할당하기 때문에 값이 비어 있어도 항상 값이 할당됩니다.

empty()은 변수에 할당이 없으면 false를 반환합니다.

4

이것은 완전히 내게 기대됩니다.

fname이라는 요소가있는 양식을 제출 했으므로 비어 있어도 여전히 설정되어 있습니다.

, isset이 true로 평가하면 'FNAME'변수가 어쨌든 전송되기 때문이다 아무것도

2

나에게 맞는 것 같습니다. 입력 필드가 비어있을 때 이 빈 배열에 배열에 이 아닌NULL이됩니다.

$_POST['fname'] = ""; 
array_key_exists('fname', $_POST) == true; // independent of its value