사용자 도구

사이트 도구


사이드바

language:php:php와mysql-ch3-배열

3장 - 배열

$VarName[ Key ] == Value. 

Key는 배열의 인덱스. 또한 Key는 숫자 또는 문자열이 가능하다.

배열 만들기

$_ar = array( ‘a’, ‘b’, ‘c’ );
$_ar = range( 1, 10 );  	// 1부터 10까지 값을 가지는 배열
$_ar = range( 1, 10, 2 );	// 1부터 10까지 홀수의 배열
$_ar = range( ‘a’, ‘z’ );	// 영문자 a ~ z까지의 배열

배열은 따로 선언하지 않아도, 사용하는 즉시 만들어진다.

숫자 인덱스

값을 사용하기
$_ar[ 0 ]; // 괄호 사이에 인덱스 번호
값을 대입하기
$_ar[ 0 ] = ‘NewValue’;

내용 확인하기

echo$_ar[0] $_ar[1]; // “...” 사이의 변수들은 실제 값으로 사용(출력)된다.

루프에서 배열 사용하기

for( $i = 0; $i < 3; $i++ ) { echo $_ar[ $i ] . “  “; }
foreach( $_ar as $var ) { echo $var . “ “; } // foreach( <배열> as <배열항목> ) 구문 참고.

문자열을 Key 값으로 사용

$_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 배열의 값이다.
foreach( $_ar2 as $_key => $_value )
{
	echo $_key .-. $_value .<br/>;
}

중요

$_value로 전달되는 값은 참조(레퍼런스)가 아닌 값의 복사이므로,
배열과 같이 참조형으로 전달될 필요가 있는 경우에는 '&'를 사용해서 참조라고 명시해야 한다.

// $_ar2는 배열을 값으로 갖는 배열
$_ar2 = Arary( Array('a','b'), Array('c','d') );
// 값의 변경이 바로 반영되기를 원하는 경우에는 참조로 값을 넘겨야 한다.
foreach( $_ar2 as $_key => &$_value )
{
	echo $_key .-. $_value .<br/>;
}

each 함수

while( $_elem = each( $_ar2 ) )	
{
	echo $_elem[key];
	echo $_elem[ ‘value’ ];
}

list 함수

while( list( $_a, $_b ) = each( $_ar2 ) ) {.. }
// $_a : Key, $_b = Value

다차원 배열

2차원 이상의 배열을 사용할 수 있다. 코드 상으로는 3, 4도 가능하겠으나… 실용성은 적겠지.

$_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( 배열변수, ‘함수이름’ )
개발자 임의로 Custom 정렬하는 기능을 사용하려고 할때 사용.
다차원배열과 같이 일반 함수로는 정렬할 수 없는 경우, Custom 정렬함수를 추가해서 배열을 정렬한다.
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() 배열의 위치를 움직인 다음에 값을 리턴

배열의 각 요소들에 일괄적인 처리를 하고 싶은 경우( 각 요소에 함수 적용? )

모든요소를 사용해야하거나 같은 방식으로 요소를 모두 수정하려고 하는 경우,

array_walk( array _ar, string func, mixed )

func는 임의의 custom 함수로,

customFunc( value, key, userData ) 의 형식을 갖는다.

배열 개수

count()
sizeof()
배열의 개수
array_count_values() 배열상에서, 같은 요소를 가진 것들로 다시 배열을 만들어서 리턴
array( 1, 1, 3, 4, 5, 5, 5 ) –> 이 함수를 사용하면
array( 1 ⇒ 2, 3 ⇒ 1, 4 ⇒ 1, 5 ⇒ 3 ) 가 나온다. (확인필요)
extract() 배열의 키를 변수로 만들어준다.
language/php/php와mysql-ch3-배열.txt · 마지막으로 수정됨: 2013/05/24 12:14 저자 kieuns