[PHP 5] foreach 문

2010/02/21 23:19 | Posted by Prescott

PHP를 공부하면서, 기존에 보지 못한 반복문이 있는데, 바로 'foreach' 함수입니다.
배열에 대해 사용하는거라 그런지, 정규식으론 이해가 잘 가지 않더군요 -_-;
예를 잡아서 써보았더니, 아. 이해가 빠릅니다. 역시 배운건 바로바로 써먹어봐야 기억에 잘남아요.

아무튼, 본론으로 들어가자면...

foreach문은 배열에 사용하는 함수인데, 배열의 갯수만큼 반복하는 함수입니다.
반복으로 끝나는 함수가 아닙니다. 반복 뿐만 하니라 반복시 해당 키의 값을 반환받을수 있다는 것입니다.
또한, 키의 값 뿐만 아니라 해당 키도 반환받을수 있습니다!


사용법은 반환 데이터의 종류에 따라 보통 두가지가 있습니다.

첫번째는, 배열의 갯수만큼 반복하며, 반복시 각 원소의 저장 값을 반환받을 수 있는 방법.
foreach($array as $value) statement;

두번째는, 배열의 갯수만큼 반복하며, 반복시 각 원소의 저장 값 뿐만 하니라 해당 키를 반환받을 수 있는 방법.
foreach($array as $key => $value) statement;


원하는 배열의 키 혹은 값을 모두 알고 싶을때, 이 foreach문을 응용한다면 쉽게 반환받을 수 있겠죠?


아래 예시를 보시면 쉽게 이해가 가실 겁니다.









결과:


foreach($a as $data) 의 사용 예

현재 $a의 데이터 : Zero

현재 $a의 데이터 : One

현재 $a의 데이터 : Two

현재 $a의 데이터 : Three

현재 $a의 데이터 : Four

현재 $a의 데이터 :

현재 $a의 데이터 : Windows Mobile, Android, iPhone OS, etc...



foreach($a as $k => $data) 의 사용 예

현재 $a의 키 : 0 / 데이터 : Zero

현재 $a의 키 : 1 / 데이터 : One

현재 $a의 키 : 2 / 데이터 : Two

현재 $a의 키 : 3 / 데이터 : Three

현재 $a의 키 : 4 / 데이터 : Four

현재 $a의 키 : 5 / 데이터 :

현재 $a의 키 : Mobile_OS / 데이터 : Windows Mobile, Android, iPhone OS, etc...





저작자 표시 비영리 변경 금지
크리에이티브 커먼즈 라이선스
Creative Commons License

'Programming > PHP' 카테고리의 다른 글

[PHP 5] foreach 문  (0) 2010/02/21
[PHP 5] 1차원 배열  (0) 2010/02/12

[PHP 5] 1차원 배열

2010/02/12 23:41 | Posted by Prescott

프로그래밍을 하다 보면 간혹 한개의 주제에 관련한 여러개의 변수를 생성해야 할 때가 있습니다.
수십개까지는 어느정도 노가다로 생성을 하면 되겠지만, 자료의 갯수가 수천개나 수만개인 경우에는 답이 없겠지요.

이럴 경우에는 편리한 '배열' 을 사용하면 됩니다.
배열은 '변수들의 집합' 이라고 생각하시면 이해하기가 쉬우실 겁니다.
배열은 키 값의 차원에 따라 '일차원 배열' , '이차원 배열', '삼차원 배열' 로 나뉘어집니다.

이번 게시물에서는, 일차원 배열에 대해 다루어보도록 하겠습니다.

일반적인 변수 생성은,
$변수명 = 데이터;
로 생성이 가능하지요?

배열이라고 변수와 별 다를거 없습니다. 뭐. 거의 똑같습니다.

1. 첫째, array 함수를 쓰는 방법.
이 방법은, 여러줄 쓸 필요도 없고 배열명도 귀찮게 일일히 안써도 되기 때문에 무지 편리합니다. 추천하는 방법입니다.

사용방법은 아래와 같습니다.
$배열명 = array(키 값 => 키 데이터);

(array 함수 안의 =>를  = 로 혼동하지 않게 주의하세요!)


2. 둘째, 일반적인 선언을 하는 방법.
이 방법은 일반적인 변수 선언과 똑같은 방법입니다.

사용방법은 아래와 같습니다.
$배열명[키 값] = 키 데이터;




참고로, 배열의 키 값이 없는것을 출력하는 경우에는, 해당 데이터를 출력하지 않습니다.
키값을 지정하지 않고 배열을 출력하는 경우에는 배열을 뜻하는 Array만 출력됩니다.

아래는 사용 예제입니다.
<?php
/*
Prescott's PHP Study


Title : 1차원 배열
Date : 2010/02/12

Author : Prescott
Homepage : http://prescott.pe.kr
*/


# Part 1. array() 함수를 이용한 1차원 배열 생성
$prog = array( 1 => "C", 2 => "C++",  3 => "Visual Basic", 4 => "Java", 0 => "PHP", PHP => "THE ANSWER"); // array( 키 이름 => 키 내용) 으로 배열을 생성, ""은 문자열을 의미
for($i = 0 ; $i <10 ; $i++) // 내용출력, 해당 키에 키 내용이 없는 데이터는 표시하지 않음.
{
echo "\$prog[$i] = $prog[$i]";
echo "<br />";
}
echo "\$prog[PHP] = $prog[PHP]<br /><br />"; // 키 이름을 지정하지 않고 배열을 출력한 경우. 배열을 의미하는 문자열인 Array만 출력된다.



echo "\$prog = $prog";
echo "<br /><br /><br />";






# Part 2. 일반적인 1차원 배열 생성
$Mobile_OS[0] = "Windows Mobile"; // $배열명[키이름] = 키값 으로 배열을 생성
$Mobile_OS[1] = "iPhone OS";
$Mobile_OS[2] = "Android";
$Mobile_OS[OMNIA2] = "Windows Mobile";

for($j = 0 ; $j < 10 ; $j ++)
{
echo "\$Mobile_OS[$j] = $Mobile_OS[$j]";
echo "<br />";
}
echo "\$Mobile_OS = $Mobile_OS";
echo "<br /><br /><br />";
?>




결과: http://prescott.pe.kr/php_study/1D_array.php
$prog[0] = PHP
$prog[1] = C
$prog[2] = C++
$prog[3] = Visual Basic
$prog[4] = Java
$prog[5] =
$prog[6] =
$prog[7] =
$prog[8] =
$prog[9] =
$prog[PHP] = THE ANSWER

$prog = Array


$Mobile_OS[0] = Windows Mobile
$Mobile_OS[1] = iPhone OS
$Mobile_OS[2] = Android
$Mobile_OS[3] =
$Mobile_OS[4] =
$Mobile_OS[5] =
$Mobile_OS[6] =
$Mobile_OS[7] =
$Mobile_OS[8] =
$Mobile_OS[9] =
$Mobile_OS = Array



저작자 표시 비영리 변경 금지
크리에이티브 커먼즈 라이선스
Creative Commons License

'Programming > PHP' 카테고리의 다른 글

[PHP 5] foreach 문  (0) 2010/02/21
[PHP 5] 1차원 배열  (0) 2010/02/12

mod_rewrite를 통한 블로그 주소이동

2010/02/05 01:08 | Posted by Prescott

안녕하세요. Prescott 입니다.
검색을 통한 블로그 게시물 접근 에러 수정을 완료하였습니다.


PHP스터디용 웹 호스팅 신청으로 블로그 주소가 http://prescott.pe.kr 에서 http://blog.prescott.pe.kr 로 변경으로 인해,
약 3달가량 포털사이트에 검색결과로 뜨는 제 블로그의 모든 게시물들이 표시되지 않는 문제가 있었습니다.


사실 주소 변경할 때 부터 블로그 게시물 링크문제는, Apache의 mod_rewrite 모듈을 이용하여 수정 할 수 있었다는 사실을 알고 있었습니다.
하지만 mod_rewrite 모듈은, perl의 정규표현식 사용으로 유연하고 강력하다는 장점과 동시에 저같은 Apache를 많이 다루어보지 못한 초보자에게는 해당 모듈의 사용이 너무나도 어려워서 여러번 시도 끝에 포기를 했었습니다.

그러나, 최근 mod_rewrite 모듈의 사용방법을 다시 검색하다가...
'부사리 님의 htaccess_RewriteRule을 이용한 주소 이동' 이라는 게시물을 통해 아주 간단하게 적용을 마쳤습니다.






적용과정을 설명해드리자면...


제 웹 계정의 루트 디렉토리가 www인 관계로,
RewriteRule ^(.*)$ http://blog.prescott.pe.kr/$1 [R=301,L] 을 적용하는 경우
http://prescott.pe.kr/request 의 요청을
http://blog.prescott.pe.kr/www/request 으로 넘기는 문제가 발생했었습니다.

제 웹호스팅의 아파치 설정이 DocumentRoot가 /www 으로 설정되어있어서 발생한 문제인 듯 싶어, 앞 www 부분을 동적으로 제거하는 방법을 '아파치 URL 재작성 지침서' 에서 찾았습니다.

변수 $1값인 (.*) 부분의 앞에다가 제거할 부분을 작성하면 되는것입니다.

즉,
<적용전>
RewriteEngine on
RewriteRule ^(.*)$ http://blog.prescott.pe.kr/$1 [R=301,L]

요청 : http://prescott.pe.kr/request
반환 : http://blog.prescott.pe.kr/www/request


<적용후>
RewriteEngine on
RewriteRule ^www/(.*)$ http://blog.prescott.pe.kr/$1 [R=301,L]

요청 : http://prescott.pe.kr/request
반환 : http://blog.prescott.pe.kr/request


아, 참고로 'R=301' 의 의미는 'moved permanently' 이란 의미로,
추후 검색봇이 http://prescott.pe.kr/request 이란 주소로 접근을 하면
http://blog.prescott.pe.kr/request 로 변경되었다는것을 알려주고, 해당 검색사이트에 게재된 게시물 주소를 http://blog.prescott.pe.kr/request 으로 변경해줍니다.

[L]의 의미는 C의 break 문과 비슷한 의미입니다. 뒤에 어떠한 RewriteRule이 있더라도 적용되지 않고 빠져나온다는 의미이죠.
저작자 표시 비영리 변경 금지
크리에이티브 커먼즈 라이선스
Creative Commons License


참고 : 64bit OS는 Samsung Mits USB Sync 드라이버가 없어 롬업이 불가능합니다.













저작자 표시 비영리 변경 금지
크리에이티브 커먼즈 라이선스
Creative Commons License


이번에 건달님게서 새로 올려주신 M710 롬키친 중 6.5 CL07 OEM이 안정적인것 같아 이렇게 강좌까지 써봅니다 ^^:

 

초보자분들도 쉽게 따라할수 있도록 최대한 쉽게 쓰려고 노력했습니다.

혹시라도 질문이 있으시면, 피드백을 위해 쪽지를 주시지 마시고 블로그의 해당게시물에 댓글로 질문해주세요.

추후 Q&A형태로 따로 게시할 예정입니다.


참, 오타나 틀린부분이 있다면 댓글로 제보해주시면 감사하겠습니다 :)

 

먼저, 준비해야 할 것들입니다.

 

1. T옴니아2 (M710으로 2대 테스트해보았고, M715는 테스트 해보지 않았습니다 ^^;)

2. USB케이블 그리고 Activesync가 깔린 컴퓨터 ^^:;;

3. 6.5 롬업을 위한 파일 => 여기를 클릭해서 다운로드받으세요. 

4. (WIndows VIsta / 7 사용자만) 롬업에 필요한 USB드라이버 패키지 => 여기를 클릭해서 다운로드 받으세요.

미디어플레이어에 세부볼륨조절이 있는 CK26 미디어플레이어로 교체했으며 (앨범아트는 DA18처럼 꽉 차지 않아요 ^^;),

문자메시지가 미래에서 오며 카운팅이 제대로 안되던 문제를 해결한 롬입니다. 블로그에서 다시 받으세요 :)

 

※ 현재 위의 롬은 '미디어플레이어에 세부 볼륨이 있는 버전'으로 교체하지 않았고, 미래에서 SMS가 오고 메세지를 읽어도 안읽은 메시지라고 표시되는 문제가 있사오니, 점심중 이를 해결한 새 롬을 올릴 계획입니다. 추후 롬을 다운받으시길 권장합니다. (현재 롬 빌드 끝났으며 테스트중입니다...)

  

!! 강좌에서 스마트락 설정 이후 삼성잠금을 해제하는 부분이 누락되어 있습니다.

누락된 부분을 현재 작성중입니다. 잠시만 기다려주세요.

스마트락 잠금을 해도 삼성잠금이 뜨는 이슈를 해결할 수 있을 것입니다.

해당 누락사항 강좌에 추가하였습니다.

 

!!! 강좌에 한가지 빼먹은게 있네요((추가했습니다), 롬업 전 반드시 액티브싱크로 연락처 동기화 후에 작업하시길 바랍니다.

롬업을 할 경우 연락처는 초기화되기 때문입니다.

연락처 이외의 문자메세지, My Storage, 그리고 Storage Card 는 초기화 되지 않으니 안심하세요.

 

 

!!!! 에구... 또 빼먹은게 있네요, Windows 7 사용자는 별도의 드라이버 설치가 필요합니다.

저녁 전에 Part 1-2에 추가하겠습니다. 죄송합니다 (__) 관련사항 추가완료

 

 

 

저작자 표시 비영리 변경 금지
크리에이티브 커먼즈 라이선스
Creative Commons License



아래 25개의 파일들을 한 곳에 모두 저장하고 [RomUpgrade.part01.exe] 을 실행하시면,
강좌에 쓰이는 RomUpgrade.zip 파일이 생성됩니다.


볼륨 세부조절이 안되는 점을 해결하기 위해 CK26 미디어 플레이어로 교체되어있고,
(대신 DA18과 같이 앨범아트가 꽉 안찹니다.)
문자메세지가 미래에서 오는 현상과 메시지를 읽었음에도 불구하고 읽지 않은 메세지가 있다는 현상을 개선하였습니다.

그 이외에 별도로 손 댄 곳은 없습니다.











크리에이티브 커먼즈 라이선스
Creative Commons License

이전 1 다음