language:php:php와mysql-ch3-배열
차이
문서의 선택한 두 판 사이의 차이를 보여줍니다.
다음 판 | 이전 판 | ||
language:php:php와mysql-ch3-배열 [2013/05/24 12:14] – 새로 만듦 kieuns | language:php:php와mysql-ch3-배열 [2024/04/23 22:44] (현재) – 바깥 편집 127.0.0.1 | ||
---|---|---|---|
줄 1: | 줄 1: | ||
+ | ~~Title:PHP 배열~~ | ||
+ | {{page> | ||
+ | |||
+ | ====== 배열 ====== | ||
+ | |||
+ | <code php> | ||
+ | $VarName[ Key ] = Value. | ||
+ | </ | ||
+ | |||
+ | Key는 배열의 인덱스. 또한 Key는 숫자 또는 문자열이 가능하다. | ||
+ | |||
+ | ===== 배열 만들기 ===== | ||
+ | |||
+ | <code php> | ||
+ | $_ar = array(); | ||
+ | $_ar = array( ‘a’, ‘b’, ‘c’ ); | ||
+ | |||
+ | $_ar = range( 1, 10 ); // 1부터 10까지 값을 가지는 배열 | ||
+ | $_ar = range( 1, 10, 2 ); // 1부터 10까지 홀수의 배열 | ||
+ | $_ar = range( ‘a’, ‘z’ ); // 영문자 a ~ z까지의 배열 | ||
+ | </ | ||
+ | |||
+ | 배열은 따로 선언하지 않아도, 사용하는 즉시 만들어진다. | ||
+ | |||
+ | ===== 배열 내용 출력 ===== | ||
+ | |||
+ | <code php> | ||
+ | <?php | ||
+ | $array = array(1, 1, 1, 1, 1, 8 => 1, 4 => 1, 19, 3 => 13); | ||
+ | print_r($array); | ||
+ | ?> | ||
+ | </ | ||
+ | |||
+ | ===== 숫자 인덱스 ===== | ||
+ | |||
+ | | 값을 사용하기 | <code php> | ||
+ | | 값을 대입하기 | <code php> | ||
+ | |||
+ | ===== 내용 확인하기 ===== | ||
+ | <code php> | ||
+ | echo “$_ar[0] $_ar[1]”; // “...” 사이의 변수들은 실제 값으로 사용(출력)된다. | ||
+ | </ | ||
+ | |||
+ | ===== 루프에서 배열 사용하기 ===== | ||
+ | |||
+ | <code php> | ||
+ | for( $i = 0; $i < 3; $i++ ) { echo $_ar[ $i ] . “ “; } | ||
+ | foreach( $_ar as $var ) { echo $var . “ “; } // foreach( < | ||
+ | </ | ||
+ | |||
+ | ===== 문자열을 Key 값으로 사용 ===== | ||
+ | |||
+ | <code php> | ||
+ | $_ar2 = array( ‘A’ => 10, ‘B’ => 20 ); | ||
+ | //(or) | ||
+ | $_ar2 = array( ‘A’ => 10 ); | ||
+ | $_ar2[ ‘B’ ] = 40; | ||
+ | // 배열 생성 후 임의로 ‘B’ 항목 추가 | ||
+ | </ | ||
+ | |||
+ | ===== 루프에서 배열 사용하기 ===== | ||
+ | |||
+ | for 문은 사용 불가능...? | ||
+ | |||
+ | foreach / list / each 를 사용한다. | ||
+ | |||
+ | ==== foreach 문장 ==== | ||
+ | |||
+ | $_ar2의 배열을 foreach 문을 사용해서 처음부터 순차적으로 사용한다. | ||
+ | |||
+ | * $_key는 배열의 키 (키를 정하지 않으면 0으로 시작되는 숫자 인덱스) | ||
+ | * $_value 배열의 값이다. | ||
+ | |||
+ | <code php> | ||
+ | foreach( $_ar2 as $_key => $_value ) | ||
+ | { | ||
+ | echo $_key . “ - “ . $_value . “ < | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | **중요** | ||
+ | |||
+ | $_value로 전달되는 값은 참조(레퍼런스)가 아닌 값의 복사이므로, | ||
+ | |||
+ | <code php> | ||
+ | // $_ar2는 배열을 값으로 갖는 배열 | ||
+ | $_ar2 = Arary( Array(' | ||
+ | // 값의 변경이 바로 반영되기를 원하는 경우에는 참조로 값을 넘겨야 한다. | ||
+ | foreach( $_ar2 as $_key => & | ||
+ | { | ||
+ | echo $_key . “ - “ . $_value . “ < | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | <code php> | ||
+ | while( $_elem = each( $_ar2 ) ) | ||
+ | { | ||
+ | echo $_elem[ ‘key’ ]; | ||
+ | echo $_elem[ ‘value’ ]; | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | ==== list 함수 ==== | ||
+ | |||
+ | <code php> | ||
+ | while( list( $_a, $_b ) = each( $_ar2 ) ) { ….. } | ||
+ | // $_a : Key, $_b = Value | ||
+ | </ | ||
+ | |||
+ | ===== 다차원 배열 ===== | ||
+ | |||
+ | 2차원 이상의 배열을 사용할 수 있다. 코드 상으로는 3, 4도 가능하겠으나... 실용성은 적겠지. | ||
+ | |||
+ | <code php> | ||
+ | $_ar3 = | ||
+ | ( array( ‘1-1’, ‘1-2’, ‘1-3’ ), | ||
+ | array( ‘2-1’, ‘2-1’, ‘2-2’ ) ); | ||
+ | </ | ||
+ | |||
+ | ===== 배열을 다루는 함수들 ===== | ||
+ | |||
+ | | reset() | each()로 변경된 배열의 위치를 처음으로 되돌린다. | | ||
+ | | sort() | 배열을 정렬한다. | | ||
+ | | ::: | SORT_REGULAR : 내림차순 | | ||
+ | | ::: | SORT_NUMERIC : ? | | ||
+ | | ::: | SORT_STRING : ? | | ||
+ | | asort() / arsort() | 문자열 인덱스 배열 정렬시, 요소의 값에 따라 정렬. asort()는 역으로 정렬. | | ||
+ | | ksort() / krsort() | 문자열 인덱스 배열 정렬시, 배열키를 알파벳 순서대로 정렬. krsort()는 역으로 정렬. | | ||
+ | | usort() | usort( 배열변수, | ||
+ | | shuffle() | 배열섞기 | | ||
+ | | array_reverse() | 배열을 역순으로 만들어서 리턴(?) | | ||
+ | | array_push() | 배열의 끝에 항목추가 ( 앞이 아닌가? ) | | ||
+ | | array_pop() | 배열의 끝에서 얻고 삭제 | | ||
+ | | array_reverse() | array_reverse( $_var ), 복사본을 리턴하고 원본은 유지. | | ||
+ | | range() | 배열을 생성 | | ||
+ | | ::: | range( 시작, 종료값, 증가분 ) | | ||
+ | | ::: | range( 10, 1, -1 ) -> 10 .. 1 까지의 숫자 배열 | | ||
+ | | explode() | 토큰을 얻는 함수. | | ||
+ | | ::: | explode( STRING _seperator, STRING _string, int limit ) | | ||
+ | | ::: | _string을 _seperator 단위로 끊어서 배열로 저장한다. | | ||
+ | |||
+ | ===== 배열을 탐색할때 사용하는 함수들 ===== | ||
+ | |||
+ | | intval() | 문자열을 숫자로 변경 | | ||
+ | | current() | current( $_ar ); 배열의 현재 위치의 값 리턴 | | ||
+ | | each(), next() | 배열의 현재 위치를 하나씩 앞으로 (다음으로) 이동 | | ||
+ | | end() | 배열의 끝으로 이동 | | ||
+ | | prev() | 배열의 위치를 움직인 다음에 값을 리턴 | | ||
+ | |||
+ | ===== 배열의 각 요소들에 일괄적인 처리를 하고 싶은 경우( 각 요소에 함수 적용? ) ===== | ||
+ | |||
+ | 모든요소를 사용해야하거나 같은 방식으로 요소를 모두 수정하려고 하는 경우, | ||
+ | <code php> | ||
+ | array_walk( array _ar, string func, mixed ) | ||
+ | </ | ||
+ | func는 임의의 custom 함수로, | ||
+ | <code php> | ||
+ | customFunc( value, key, userData ) 의 형식을 갖는다. | ||
+ | </ | ||
+ | |||
+ | ===== 배열 개수 ===== | ||
+ | |||
+ | | count() \\ sizeof() | 배열의 개수 | | ||
+ | | array_count_values() | 배열상에서, | ||
+ | | extract() | 배열의 키를 변수로 만들어준다. | | ||
+ | |||
+ | ====== 배열에서 특정 값이 있는지 찾기 ====== | ||
+ | |||
+ | * [[https:// | ||
+ | |||
+ | <code php> | ||
+ | <?php | ||
+ | $os = array(" | ||
+ | if (in_array(" | ||
+ | echo "Got Irix"; | ||
+ | } | ||
+ | if (in_array(" | ||
+ | echo "Got mac"; | ||
+ | } | ||
+ | ?> | ||
+ | </ |