티스토리 뷰
반응형
php 에서 다음과 같은 조건을 가장 효과적으로 표현하는 방법은 무엇일까요?
$var 가 "ibm", "ms", "apple" 중 하나일 경우 참이다2차방정식에서 근의공식을 이용하여 근을 구하듯,
본능적으로,
$var = "ms";
if($var == 'ibm' || $var == 'ms' || $var == 'apple')
{
}
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))
{
}
$list = "ibm, ms, apple";
if(eregi($var, $list))
{
echo "ok";
}
방법 2.
$var = "ms";
$list = "ibm, ms, apple";
if(substr_count($list, $var))
{
}
$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";
}
더욱 좋은 표현이 있을까요?
반응형
댓글