묻고답하기
page_full_width" class="col-xs-12" |cond="$__Context->page_full_width">
내장함수중에 몇개만 질문합니다.
2004.04.03 21:26
책이 참.. 맘에 들게 구성되어있네요..
예제라고 따라하라고 해놓구 함수에 관한 기초설명도 없으니.. -_-;; (영*출판사)
책도 초보가 시작할때 꼭 필요한 책이라고 자랑(?)하더니 역시 초보의 입장을 별로 반영하진 않았군요..
우선 소스몇줄...
$test = array("d"=>"lemon","a"=>"orange","b"=>"banana","c"=>"apple");
arsort($test);
for(reset($test); $key = key($test); next($test)) {
echo "TEST[$key] = ".$test[$key]."<br>";
}
여기서 질문드립니다.
제가 알고 있기로 for()문은 for(초기값; 조건문; 증감식) 의 형식으로 사용되는 걸로 아는데요..
JavaScript의 예로.. 일반적으로 for(var i=0; i<=10; i++) 이렇게 쓰이는 걸로 아는데..
PHP는 특이한 형태로도 쓰이는군요..(아님 제가 잘 모르고 있는건지..-_-;)
for()문에 관해서 묻고 싶은게 아니라 제가 알고 싶은건..
저기 for문에 사용된 함수중에 reset(), key(), next() 함수에 대해서 알고싶습니다.
이 3가지 함수가 어떤 함수인지만 알면 쉽게 이해할것 같은데..
이 책의 색인를 뒤져봐도 책에는 없는 함수네요..
왕초보의 허접 질문이라 죄송합니다. ㅜㅜ
예제라고 따라하라고 해놓구 함수에 관한 기초설명도 없으니.. -_-;; (영*출판사)
책도 초보가 시작할때 꼭 필요한 책이라고 자랑(?)하더니 역시 초보의 입장을 별로 반영하진 않았군요..
우선 소스몇줄...
$test = array("d"=>"lemon","a"=>"orange","b"=>"banana","c"=>"apple");
arsort($test);
for(reset($test); $key = key($test); next($test)) {
echo "TEST[$key] = ".$test[$key]."<br>";
}
여기서 질문드립니다.
제가 알고 있기로 for()문은 for(초기값; 조건문; 증감식) 의 형식으로 사용되는 걸로 아는데요..
JavaScript의 예로.. 일반적으로 for(var i=0; i<=10; i++) 이렇게 쓰이는 걸로 아는데..
PHP는 특이한 형태로도 쓰이는군요..(아님 제가 잘 모르고 있는건지..-_-;)
for()문에 관해서 묻고 싶은게 아니라 제가 알고 싶은건..
저기 for문에 사용된 함수중에 reset(), key(), next() 함수에 대해서 알고싶습니다.
이 3가지 함수가 어떤 함수인지만 알면 쉽게 이해할것 같은데..
이 책의 색인를 뒤져봐도 책에는 없는 함수네요..
왕초보의 허접 질문이라 죄송합니다. ㅜㅜ
댓글 3
-
플로렐라
2004.04.03 22:47
-
써니루루☆
2004.04.04 00:31
앞에 분께서 내장함수가 아니라고 하는것이 어떤것인지 잘 모르겠군요.
배열의 내부에는 배열을 구성하는 요소(Element)들로 구성이 됩니다.
배열 내부를 탐색하려면 이들 요소들중 지금 어디를 가리키고 있는 개념적인 커서가 필요합니다.
그런 개념적인 커서를 인덱서(Indexer)라고 말한다고 하면
그 인덱서를 배열의 맨 처음 위치로 돌려 놓고나서부터 탐색을 하는게 쉽기 때문에 맨 처음으로 돌려 놓는 함수가 reset()입니다.
key()는 현재 배열의 인덱서가 가리키고 있는 부분에서 배열 해쉬테이블 안에 있는 키값(key)과 요소의 저장된 값(value) 중에서 키값(key) 부분만을 가져오는 함수 입니다.
반대로 현재 가리키고 있는 부분의 값을 가져오고 싶다면 current() 라는 함수를 사용하시면 되겠죠. 또한 두가지 값을 다 가져오기 위해서는 흔히
list( $key , $value ) = each( $array )
를 사용 하기도 합니다.
또한 next() 는 배열 내부의 인덱서를 다음으로 넘기도록 하는 기능입니다.
다음칸으로 간다고 생각하시면 되죠.
key()나 current()와 같이 사용하시면 됩니다.
대신 list(), each() 구문은 자동으로 다음칸으로 인덱서를 넘기기 때문에 이런부분에선 사용하시면 안됩니다.
흔히 for문과 reset(), current(), next() 등을 이용해서 배열값을 탐색하거나
foreach 구문을 이용해서 간편하게 배열을 탐색하거나(foreach 이전에는 reset()을 한번 해 주어야 합니다.)
while문과 list(), each() 구문을 사용하거나 해서 배열을 탐색합니다.
거의 쓰다보면서 외워져서 공식같이 쓰는 구문이며 처음에 가장 난애하게 생각되는 부분이고, 나중에 갈수록 엄청난 활용능력을 보이는 부분인 만큼 꼭 숙지해야 할 부분이라 생각이 되는군요 ^-^ -
패러독스
2004.04.04 02:49
써니루루☆님 정말 감사 또 감사드립니다 (__)
님의 설명이 약간은(?) 어렵게 느껴지지만 우선은 제가 몰랐던, 알고싶었던 부분은
콕 찝어 말씀해주셔서 이해하게되었습니다.
가르침을 주셔서 감사합니다. 늘 행복하세요..
저 따위로 쓰는사람 면상 한번보고 싶군요-_-;