배열 Array() - PHP의 배열을 Foreach로 가지고 놀자.
페이지 정보
작성자 서방님 댓글 0건 조회 147회 작성일 17-08-11 14:25본문
출처 : http://naiyumie.tistory.com/entry/%EB%B0%B0%EC%97%B4-Array-PHP%EC%9D%98-%EB%B0%B0%EC%97%B4%EC%9D%84-Foreach%EB%A1%9C-%EA%B0%80%EC%A7%80%EA%B3%A0-%EB%86%80%EC%9E%90
foreach의 함수원형은 아래와 같습니다.
foreach (배열변수 as 키변수) statement
foreach (배열변수 as 키변수 => 값변수) statement
첫시간에 보셧던 1차원배열과 2차원배열의 원리가 생각나시나요?
여기서 배웟던 2차원 배열을 가지고 지금부터 Foreach로 배열(array)을 가지고 놀아봅니다~ ^^
우선 저번에 보았던 2차원 배열의 마지막 배열을 가지고 풀어봅니다.
<?
$arr = array(
"1반" => array("반장"=>"철수", "부반장"=>"영수", "회장"=>"미애", "부회장"=>"동현"),
"2반" => array("반장"=>"지성", "부반장"=>"동원", "회장"=>"원빈", "부회장"=>"장문"),
"3반" => array("반장"=>"효리", "부반장"=>"지원", "회장"=>"호동", "부회장"=>"유미")
);
?>
첫시간에는 이것을 print_r로 표현을 했엇죠? ^^ 이제는 조금더 쉽게 다루어 봅니다.
foreach는 말그대로 배열의 변수와 배열안에 있는 키값을 가지고 좀더 쉽게 배열에서 원하는 값을 찾을
때 사용합니다.
아래의 간단한 예로 우선 접해볼까요~ ^^
<?
foreach($arr as $value){
echo $value['반장']." / ".$value['부반장']." / ".$value['회장']." / ".$value['부회장']."<br />";
}
?>
결과값은 저번시간에 보았던 결과 와 같이
철수 / 영수 / 미애 / 동현
지성 / 동원 / 원빈 / 장문
효리 / 지원 / 호동 / 유미
로 나오겠습니다.
어떤가요? 아직 이해를 못하셧다 하더라도 확실히 소스가 줄어들었지요? ^^
<? // 저번시간꺼
print_r (
$arr['1반']['반장']." / ".$arr['1반']['부반장']." / ".$arr['1반']['회장']." / ".$arr['1반']['부회장']."<br />".
$arr['2반']['반장']." / ".$arr['2반']['부반장']." / ".$arr['2반']['회장']." / ".$arr['2반']['부회장']."<br />".
$arr['3반']['반장']." / ".$arr['3반']['부반장']." / ".$arr['3반']['회장']." / ".$arr['3반']['부회장']
);
?>
위는 저번시간의 배열풀기 입니다. 오호호~ 저긴걸 단숨에 줄였습니다!!!
foreach는 주어진 배열의 키값만큼 루프를 돈다고 생각하시면됩니다.
while이나 for처럼 루프를 도는것이지요.
소스를 잠깐 풀어보자면 이렇게 됩니다.
<?
$arr = array(
"1반" => array("반장"=>"철수", "부반장"=>"영수", "회장"=>"미애", "부회장"=>"동현"),
"2반" => array("반장"=>"지성", "부반장"=>"동원", "회장"=>"원빈", "부회장"=>"장문"),
"3반" => array("반장"=>"효리", "부반장"=>"지원", "회장"=>"호동", "부회장"=>"유미")
);
foreach($arr as $value){
echo $value['반장']." / ".$value['부반장']." / ".$value['회장']." / ".$value['부회장']."<br />";
}
?>
색갈별로 해당 함수입니다.
$arr 전체 배열 안에서 $value안에서 ['X']를 만족하는 값을 찾는것이지요.
이떄 $value에는 1반, 2반, 3반의 array(값)들이 자동으로 대입이 됩니다.
이해가 잘안되시죠? 당연한겁니다. ;; 저두 예전에 애좀 먹었죠..
$arr(배열)에 $value(값)을 읽어오는것입니다.
foreach는 우리가 생각하듯이 1차원배열 2차원배열을 생각해주지 않습니다.
우리 사용자들이 사용하는언어인 거죠 1차원배열과 2차원배열의 뜻은요.
foreach에게는 그저 $arr는 배열일 뿐입니다. 그렇기 때문에 그 배열의 값을
불러오는 형식입니다. 잘 이해가 안되셨더라도 아래로 진행하시기 바랍니다.
<?
$arr = array(
"1반" => array("반장"=>"철수", "부반장"=>"영수", "회장"=>"미애", "부회장"=>"동현"),
"2반" => array("반장"=>"지성", "부반장"=>"동원", "회장"=>"원빈", "부회장"=>"장문"),
"3반" => array("반장"=>"효리", "부반장"=>"지원", "회장"=>"호동", "부회장"=>"유미")
);
foreach($arr as $value){
echo $value."<br />";
}
?>
Array
Array
Array
이런 결과값이 나오지요?
무슨 뜻일까요? 이해가 좀되시나요? 각 배열의 키값인 1반, 2반, 3반은 무시당했지요?
$arr(배열)의 $value(값)을 달라 요청하였기때문에
배열의 1반의 값 array("반장"=>"철수", "부반장"=>"영수", "회장"=>"미애", "부회장"=>"동현")
배열의 2반의 값 array("반장"=>"지성", "부반장"=>"동원", "회장"=>"원빈", "부회장"=>"장문")
배열의 3반의 값 array("반장"=>"효리", "부반장"=>"지원", "회장"=>"호동", "부회장"=>"유미")
이렇게 출력해준것입니다.
좀더쉽게 볼자면.
$arr(배열)의
$value(array("반장"=>"철수", "부반장"=>"영수", "회장"=>"미애", "부회장"=>"동현"))
을 달라 요청하였 기때문에 $value의 값을 출력해 주는것입니다.
하지만 $value에 정의된 값은 배열이기 때문에 Array(배열)이 출력되는것이지요.
좀더 쉬워지는 예로 가봅니다. 이해가 안되더라도 배울수록 쉬워집니다. 모두 진행되고 그다음에 처음부터
보시는게 공부에 더 도움이 되시니까 진도를 나가시기 바랍니다.
아래 예제를 보세요.
<?
foreach($arr as $key => $value){
echo $key." => ".$value."<br />";
}
?>
출력은 다음과 같습니다.
1반 => Array
2반 => Array
3반 => Array
이제 완벽하게 이해가 가시나요?
배열에서 키값=>값 을 정의해주었던것과 같이 위 foreach에서 키값을 정의해 불러달라고 요청한것이지요.
그럼으로써 배열의 키값을 불러옵니다.
하지만 $value(값)은 여전히 배열이기 때문에 array(배열)을 반환합니다.
배열이 변수에 정의되있기 때문인거죠.
참고 예로 아래처럼 하면 각배열(1반,2반,3반)의 값인 배열(반장,부반장,회장,부회장) 중 원하는 반장을
추출할수 있겠습니다 ^^.
<?
foreach($arr as $key => $value){
echo $key." => ".$value['반장']."<br />";
}
?>
여기까지 이해 되셨다면 아래 예를 마지막으로 보겠습니다.
위까지 이해가 안되셨다면 다시한번 읽어보시기 바랍니다.
아래 foreach를 이해하기 힘드실꺼라 생각됩니다.
아래는 2차원 배열을 푸는 foreach의 응용입니다.
<?
$arr = array(
"1반" => array("반장"=>"철수", "부반장"=>"영수", "회장"=>"미애", "부회장"=>"동현"),
"2반" => array("반장"=>"지성", "부반장"=>"동원", "회장"=>"원빈", "부회장"=>"장문"),
"3반" => array("반장"=>"효리", "부반장"=>"지원", "회장"=>"호동", "부회장"=>"유미")
);
foreach($arr as $key => $value){
foreach($value as $keys => $values){
echo $key." / ".$keys." / ".$values."<br />";
}
}
?>
좀더 이해하시기 쉽게 하기위해 배열정의와 함께 썻습니다.
각 해당 색상이 각 해당값을 나타냅니다.
출력은 아래와 같습니다.
1반 / 반장 / 철수
1반 / 부반장 / 영수
1반 / 회장 / 미애
1반 / 부회장 / 동현
2반 / 반장 / 지성
2반 / 부반장 / 동원
2반 / 회장 / 원빈
2반 / 부회장 / 장문
3반 / 반장 / 효리
3반 / 부반장 / 지원
3반 / 회장 / 호동
3반 / 부회장 / 유미
이로써 foreach를 맘대로 가지고 노실수 있게되었습니다. ^^ 축하드립니다.
댓글목록
등록된 댓글이 없습니다.