영원한사랑

PHP5에서 foreach의 변수참조 (예 EUC-KR → UTF-8로 iconv시 유용)

http://kr2.php.net/manual/kr/control-structures.foreach.php

 
제 서버는 PHP5에 Mysql은 4.x대 EUC-KR입니다.
UTF-8로 코딩하려 하니 테이블에서 불러오고 저장할 때마다 항상
iconv 함수를 사용해야 합니다.
그런데 iconv 함수는 배열변수를 바로 사용할 수는 없습니다.
그래서, 아래와 같이 간단한 함수를 만들었습니다.

function _IconvArr ($ar, $f='EUC-KR', $t='UTF-8') # $ar=배열변수, $f=From, $t=To
{
    foreach($ar as &$v) { $v = iconv($f, $t, $v); }
    return $ar;
}

$q = "SELECT ~ 구문으로 시작하는 쿼리";
$r = mysql_query($q);
$d = mysql_fetch_array($r);
$d = _IconvArr($d);

여기에서 주목할 만한 것은, foreach 구문 안에 있는 $v 앞에 있는 &입니다.
쓸 데 없이 배열변수를 하나 더 사용하여 값을 복사하지 않고
해당 배열변수 안의 값이 변경됩니다.

PHP5부터 가능하다고 합니다.

이뿐만 아니라, foreach 함수를 사용하면서
필요할 때 유용하게 사용할 수 있는 팁이라 생각합니다. 

http://phpschool.com/gnuboard4/bbs/board.php?bo_table=tipntech&wr_id=64548&page=1