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