PHP 3분 핵심 요약집
6.01. 값이 비어있는지 검사하기
연서은
2024. 5. 9. 11:20
변수가 존재한다는 가정 하에 (isset($var) === true) 변수의 값이 빈 문자열("") 이거나 빈 배열이면 거짓(false) 아니면 (true) 를 반환하는 함수를 작성한다.
<?php
function valid_required($input)
{
return is_array($input) ? empty($input) === False : trim($input) !== '';
}
var_dump(valid_required(""));
var_dump(valid_required(array()));
var_dump(valid_required("php"));
var_dump(valid_required(array(1)));
위 코드를 valid_required.php 파일에 저장하고 브라우저에서 결과를 확인한다.
bool(false) bool(false) bool(true) bool(true)
아래처럼 사용할 수 있다.
valid_required("");
파라미터가 배열이라면 배열이 비어있는지 검사한다.
is_array($input) ? empty($input)
- is_array 함수는 배열인지 검사하는 함수다.
- empty는 값이 비어있는지 검사하는 함수다.
문자열이라면 좌우 공백을 제거했을 때 빈 문자열인지 검사한다.
trim($input) !== ''
- trim ; 좌, 우 공백을 제거한다. 비슷한 함수로 ltrim 함수는 왼쪽의 공백만 제거하고, rtrim 함수는 오른쪽의 공백만 제거한다.
따라서 valid_required 함수를 유사 코드(pseudo code)로 표현하면 아래와 같다.
배열이면 ? 배열이 비어있지 않을 것 : 아니면 좌우 공백을 제거했을 때 빈 문자열이 아닐 것.
보통 파라미터로 들어온 값이 있는지 유효성을 검증하기 위해 쓰인다. 예를 들어 쿼리스트링으로 param이라는 키를 가진 값이 서버로 전달되었는지 확인하는 코드는 아래와 같다.
$is_valid_required = isset($_GET['param']) && valid_required($_GET['param']);
&& 기호는 앞의 결과가 참(true)일 때만 다음 표현을 실행한다. 이유는 &&는 앞 뒤 둘 다 참이어야 참을 나타내기 때문에 앞의 결과가 거짓(false) 이라면 뒤의 것이 참이든 거짓이든간에 결과적으로는 거짓이기 때문이다.
이런 &&의 특성을 이용해서 값이 있다면 값이 비어있는지 검사할 수 있게 된다.
함수를 조금 더 추상화해 보자. 쿼리 스트링이 꼭 있어야 하는지 유효성 검사를 하는 함수를 작성한다.
function valid_required_get($key){
return isset($_GET[$key]) && valid_required($_GET[$key]);
}
아래처럼 사용할 수 있다.
Copy$is_valid_required = valid_required_get("param");