isset()함수가 빈 문자열을으로 취급 TRUE하므로 isset()HTML 양식에서 텍스트 입력 및 텍스트 상자의 유효성을 검사하는 효과적인 방법이 아니라는 것을 읽었습니다 .
따라서 empty()사용자가 무언가를 입력했는지 확인하는 데 사용할 수 있습니다 .
-
isset()함수가 빈 문자열을 다음과 같이 취급 한다는 것이 사실TRUE입니까? -
그렇다면 어떤 상황에서 사용해야
isset()합니까? 항상!empty()무언가가 있는지 확인 하기 위해 사용해야합니까 ?
예를 들어 대신
if(isset($_GET['gender']))...
이것을 사용하여
if(!empty($_GET['gender']))...
답변
FTA :
“isset ()은 변수에 (False, 0 또는 빈 문자열)을 포함하는 값이 있는지 확인하지만 NULL이 아닌지 확인합니다. var가 있으면 TRUE를 반환하고 그렇지 않으면 FALSE를 반환합니다.
반면에 empty () 함수는 변수에 빈 값이 빈 문자열, 0, NULL 또는 False인지 확인합니다. var에 비어 있지 않고 0이 아닌 값이 있으면 FALSE를 반환합니다. “
답변
가장 일반적인 방법 :
isset변수 (또는 배열의 요소 또는 객체의 속성) 가 존재 하는지 (그리고 null이 아닌지 ) 테스트empty변수 (…)에 비어 있지 않은 데이터가 포함되어 있는지 테스트합니다.
질문 1에
답하려면 :
$str = '';
var_dump(isset($str));
준다
boolean true
변수 $str가 존재하기 때문입니다.
그리고 질문 2 :
isset을 사용하여 변수가 가 존재 합니다 . 예를 들어, 일부 데이터를 배열로 가져 오는 경우 해당 배열에 키가 설정되어 있는지 확인해야 할 수 있습니다.
예를 들어 / 에 대해
생각해보십시오 .$_GET$_POST
이제 그 가치를 연구하기 위해, 그러한 가치가 있다는 것을 알 때 : empty .
답변
둘 다 유효한 입력을 확인하는 좋은 방법이 아닙니다.
isset()이미 언급했듯이 빈 문자열을 유효한 값으로 간주하기 때문에 충분하지 않습니다.! empty()유효한 값일 수있는 ‘0’을 거부하기 때문에 충분하지 않습니다.
isset()빈 문자열에 대한 동등성 검사와 결합 하여 사용 하는 것은 수신 매개 변수에 거짓 부정을 생성하지 않고 값이 있는지 확인하는 데 필요한 최소한의 것입니다.
if( isset($_GET['gender']) and ($_GET['gender'] != '') )
{
...
}
그러나 “최소한”이라는 말은 정확히 그것을 의미합니다. 위의 코드는 모두에 대한 값이 있는지 여부를 확인하는 것입니다 $_GET['gender']. 의 값 이 유효한지 여부 (예 : 중 하나 ) 는 결정 하지 않습니다 .$_GET['gender']("Male", "Female","FileNotFound")
이를 위해 Josh Davis의 답변을 참조하십시오 .
답변
isset값이 아닌 변수에만 사용하기위한 것이므로 isset("foobar")오류가 발생합니다. PHP 5.5부터는 empty변수와 표현식을 모두 지원합니다.
따라서 첫 번째 질문은 빈 문자열을 포함하는 변수에 대해 true 를 isset반환 하는지 여부 입니다. 그리고 대답은 :
$var = "";
var_dump(isset($var));
타입 비교 테이블PHP 매뉴얼 은 이러한 질문에 매우 유용합니다.
isset기본적으로 검사 변수 이외의 값이있는 경우 는 null를 존재하지 않는 변수는 항상 값이 있기 때문에 널을 . empty카운터 부분의 일종 isset이지만 정수 값 0과 문자열 값 "0"도 비어있는 것으로 취급합니다 . (다시 한 번 유형 비교 테이블을 살펴보십시오 .)
답변
$ _POST [ ‘param’]이 있고 문자열 유형이라고 가정하면
isset($_POST['param']) && $_POST['param'] != '' && $_POST['param'] != '0'
~와 동일하다
!empty($_POST['param'])
답변
isset ()은 HTML 양식에서 텍스트 입력 및 텍스트 상자의 유효성을 검사하는 효과적인 방법이 아닙니다.
“isset ()은 입력의 유효성을 검사하는 방법이 아닙니다.”라고 다시 작성할 수 있습니다 . 입력을 확인하려면 PHP의 필터 확장을 사용 합니다 . filter_has_var()변수가 존재하는지 여부를 알려줍니다.filter_input()실제로 입력을 필터링 및 / 또는 삭제하는 .
filter_has_var()이전 에 사용할 필요 filter_input()가 없으며 설정되지 않은 변수를 요청 filter_input()하면을 반환 null합니다.
답변
사용시기 및 방법 :
- isset ()
0, 1의 경우 참 , 빈 문자열, 값을 포함하는 문자열, 참, 거짓
null 인 경우 False
예 :
$status = 0
if (isset($status)) // True
$status = null
if (isset($status)) // False
- 빈
1의 경우 False , 값을 포함하는 문자열, true
null의 경우 참 , 빈 문자열, 0, 거짓 예
$status = 0
if(empty($status)) // true
$status = 1
if(empty($status)) // False
