php에서 for문과 foreach문의 차이점이 무엇인가요?

okt1973의 이미지

일본어에서요......파일을 불러와서 비교하려는 단어가 있으면 치환한후에 다른 문자을 집어넣으려 하는데요...

현재 아래처럼 사용하고 있는데요...

foreach($e_data as $i=>$value){
$data=eregi_replace($e_data[$i],$i_data[$i],$data);
}

for($i=0;isset($e_data [$i]);$i++){
$data=eregi_replace($e_data [$i],$i_data [$i],$data);
}

두문장을 사용하기 전에 bin2hex를 사용해서 비교한 후에 pack함수로 바이너리로 만드는데요....

위에껀 $data에 있는 전체 배열을 찾아주긴 하는데...pack사용시 배열에 없었던 가나들이 $+처럼 보여지네요..

밑에 껀 전 배열을 찾지는 못하지만 pack사용시 전부 가나문자로 잘 보여지는데....

둘의 차이점이 몬가요?

혹시 해결하려면 어떤식으로 하면 될까요?

nohmad의 이미지

php의 배열은 맵을 겸하기도 해서 좀 특이합니다. 다음과 같은 코드가 있을 때,

array("foo", "foo" => "bar", "bar");

foreach 버전은 요소 전부(3개)를 순회합니다. for 버전은 isset($e_data[$i]) 식으로 체크하므로 유효한 "키/값"쌍인 요소만 순회합니다. print_r 같은 것으로 배열 내용을 확인해보시면 알 수 있을 것 같네요.