글쓴사람 June
글쓴시간2004년 12월 20일 오후 3시 29분 55초
    제목PHP 4.3.10 + Zen optimize시 Foreach문의 오류
PHP 4.3.10버전과 Zend Optimize가 혼합되어 사용시
기존의 문법 foreache($data as $val)

의 경우 $data 배열의 값만 $val에 넣어 갔지만
Zend Optimize가 구동될경우 $val에

배열로 넘겨집니다. $val[0]이 실제 값이고 $val[1]이 키값이 됩니다.
Template_의 경우가 실제 파싱되어진 결과 파일에는 foreache가 위의 형태로있다보니

결과가 않나오는 현상을 보신분이 계실듯.
지금 4.3.11 Sanp버전으로 해도 같은 현상이네요.

Temaplte_를 패치를 해야 할듯 싶네요.
관리자 June 님 안녕하세요..

http://www.zend.com/manual/control-structures.foreach.php

메뉴얼 페이지 보시면 어떤 경우에도 $val 이 위와 같이 작동하는 경우는 없습니다.

말씀하신게 사실이라면 Zend Optimizer 의 버그인데요.. Zend Optimizer 의 버전은 어떻게 되나요..
04-12-20 16:13
June 저도 4.3.8/9/10/11-devel 로 모두 해보았습니다.
PHP자체의 문제는 아니고 Zend Optimizer의 최적화 문제인것 같습니다.
Zend Optimizer 2.5.7 최신입니다.
아무래도 Template_에서 패치를 적용하는게 낳을것 같네요
foreach에서 key를 받는 변수만 있으면 상호환에 문제가 없을것 같습니다.

저는 mmcache만 적용하는지라 모르고 있었는데
Zend Optimizer를 설치해야 할 상황이 생겨서 적용하고
당황스러웠답니다.
04-12-20 20:53
관리자 상당히 골치 아픈 문제네요.^^; 일단 제보 감사합니다.
흔히 사용하는 foreach 구문에 그런 에러가 있다면..
Template_ 든 어떤 모듈이든.. foreach ($a as $v) echo $v; 를 foreach ($a as $v) echo $v[0]; 으로 바꿔야 한다는 건데.. 이건.. 젠드 쪽에서 해결해 줘야할 문제가 아닐지.. 싶습니다.

제가 자체적으로 테스트하고 확인해 보지 못한 점 송구스럽구요.. 연말에 업데이트한다고 했으니.. 그 때까지 어떻게든 해결해 보겠습니다.
04-12-20 23:27
June 송구스러우시긴요.^^ 별말씀을.제가 도움이 못되서 죄송합니다
Template_ 분석을 빨리했으면 제가 고쳐서라도 올렸어야 하는데 개을러서
아므튼 덕분에 아주아주 잘쓰고 있습니다.^^
행복한 연말되시길 바랍니다.
04-12-20 23:47
강상욱 말씀하신 문제는 PHP 4.3.10를 설치한 경우 ZO 2.5.5 이하의 버전에서 발생하는 문제입니다. 2.5.7에서는 문제가 해결되었습니다.
04-12-23 10:53
꾹꾹이 젠드쪽에서 PHP 4.3.10 에 관련된 공지 사항이 떴네요.
2.5.7에 대한 패치를 방금 적용했는데.. 정상 동작합니다.
임의로 수정해서 썼었는데.. 원래 소스로 돌려놨습니다.
04-12-23 13:28
관리자 중요한 얘긴 아니겠지만.. 제보하신 분 말씀에 따르면 2.5.7 에 대한 패치가 맞는 말인 거 같고.. 강상욱님 말씀이나 젠드공지에 따르면.. 그냥 2.5.7 을 적용하면 된다는 것 같고.. 암튼.. 최신버전 설치하면 해결 되는거 같네요.. 후자가 사실이더라도 저도 가끔 기억력을 의심하게 되는 일을 겪곤 해서 이해는 합니다. php4 changelog 보니까 php5의 foreach 를 가져왔다고 하는데.. 그래서 생겼던 문제인가 보네요.
04-12-23 15:48
    이름
비밀번호
 
Since 2003-03-03 hosted on vultr.com