맘만 급한 개초보로서,
each, list 는 거의 안쓰고, 편리하게 foreach 로 쓴다
each 와 list 를 쓰는 것보다 foreach 가 훨씬 빠르다.
위와 같은 말들에 each 와 list 함수는 패스하고, foreach를 쓰면서 여전히 찝찝했다.
foreach 도 for와 each 가 왜 결합이 돼 있나. each 가 뭐길래...? 이런 근본적인 의문이.
그래, 한번 보자. ㅠㅠ 하기 싫은 걸 할 때는 뇌가 느리게 움직이고, 이해도 안된다. ㅠ
가즈아!!!
아래와 같은 예시가 가장 많은데
$arr = array('도','레','미');
while (list($a,$b)=each($arr){
echo $a; // each 에서 리턴한, 배열원소의 키
echo $b; // each 에서 리턴한, 배열원소의 값
}
- each 함수는 한번 실행할 때마다, 배열의 key 와 value 를 리턴한다고 한다.
( ----> mysqli_fetch_array() 나 mysqli_fetch_assoc() 와 비슷한 형태구나! 하고 이해함. ) - list (배열키, 배열값) 을 받는다. each 와 같이, 한번 실행할 때마다 키와 값을 담는다.
- each 함수는 어떤 형태로 배열의 키와 값을 반환할까? 흠...
$arr 을 each 함수에 집어넣고, $a 변수에 집어넣어보자. 어떤 값을 반환하는지 보기위해...
$arr = array('도','레','미');
$a =each($arr);
역시 진리의 print_r()
Array (
[1] => 도
[value] => 도
[0] => 0
[key] => 0
)
arr[0] 을 이렇게 친절하게도..... 풀어내다니.... 감동. ㅠㅠ $a[0] 이나, $a['key'] 를 하면, 언제든 배열 키도 뽑을 수 있다는 것이잔아... ( 지금 생 기초단계에서 필요없겠으나, 복잡한 배열 이용할 시 힌트가 많이 될 것 같다 )
each 함수는 인덱스배열과 연관배열 둘 다 반환하고 있었다. mysqli_fetch_array() 처럼... +_+
foreach 와 비교 실행을 해보니, 느리다기 보다는.... 이래서, 느릴것인데, 이 만큼 느리더라고 했으면 이해가 빡 갔을낀데. 역시 개초보는 힘들어. ㅠ
위와 같이 인덱스/연관 두 형태로 리턴하기 때문에, 이렇게 되는 것임.
<?php
$arr = array('도','레','미');
$a = each($arr); //
echo $a[0]; // 0
echo $a[1]; // 도
echo $a['key']; // 0
echo $a['value']; // 도
?>
그런데, 변수 $a에 담갔다 꺼내는 것이 아니라,
list(키 변수,값 변수) 를 이용하면...
list($a,$b) = each($arr);
echo $a;
echo $b;
바로 이렇게 키(인덱스)와 값을 리턴한다.
<결과>
0
도
요걸.. 최종 예제로 foreach 와 비교하면
1) for 문을 이용
for ($i=0;$i<count($arr);$i++){
$a=each($arr);
echo $a[0];
echo $a[1];
}
2. while 문을 이용
while (list($a,$b)=each($arr) { // $arr 배열변수에서 키와 값을 다시 배열로 리턴!---> list 함수에 담아라. 반복
echo $a $b ;
}
3. foreach 문을 이용.
foreach ($arr as $a => $b){
echo $a $b;
}
foreach 1) each(배열변수)로 키와 값을 다시 배열로 리턴 후
2) list함수로 받아서 원소의 키와 값만 각각 변수에 저장하는 것을 합쳤다.
3) 반복문이여서 for 라는 이름을 사용하나 보다.
'PHP' 카테고리의 다른 글
php...하...... (0) | 2020.01.28 |
---|---|
성공적인 웹 프로그래밍 리뷰/후기 (0) | 2020.01.27 |
4주차. 잠시 재정비 : 중급 책 보기 (0) | 2020.01.26 |
많은 수정 폼 업데이트 / update 문 반복 (0) | 2020.01.26 |
ERP 의 핵심. 값 일괄수정, 일괄등록 등 (0) | 2020.01.25 |
특정 기간동안 매주 월요일만 값 등록하기 (0) | 2020.01.25 |
시작1 막막하지만, 레이아웃 잡기. (css 등) (0) | 2020.01.25 |
개초보 웹 ERP 만들기 도전. 2020.01.01 (0) | 2020.01.25 |
댓글