티스토리 뷰

반응형

php 에서 다음과 같은 조건을 가장 효과적으로 표현하는 방법은 무엇일까요?
$var 가 "ibm", "ms", "apple" 중 하나일 경우 참이다
2차방정식에서 근의공식을 이용하여 근을 구하듯,
본능적으로,

$var = "ms";
if($var == 'ibm' || $var == 'ms' || $var == 'apple')
{
    echo "ok";
}


이런 모습을 떠올리시겠지만, 셋 중 하나가 아니라 열개 중 하나만 되더라도 소스코드가 상당히 지저분해집니다.

SQL 에서는 where fieldname in ('ibm', 'ms', 'apple') 과 같은 깔끔한 구문을 지원하고 있지만, php 에는 아쉽게도 이런 문법구조가 없죠;


간단하게 함수를 이용해보면, 다음과 같이 간단하게 표현할 수도 있겠죠,

방법 1.
$var = "ms";
$list = "ibm, ms, apple";
if(eregi($var, $list))
{
    echo "ok";
}

방법 2.
$var = "ms";
$list = "ibm, ms, apple";
if(substr_count($list, $var))
{
   echo "ok";
}


하지만 이 방법1,2 모두 $var 가 "m, m" 와 같은 $list 의 일부일 경우에도 참이되기 때문에 문제가 있습니다.





그래서 배열과 함수를 이용하여 다음과 같이 표현할 수 있죠

방법 3.
$var = "ms";
$list = array("ibm", "ms", "apple");
if (
in_array($var, $list))
{
   echo
"ok";
}




더욱 좋은 표현이 있을까요?




반응형
댓글