본문 바로가기
프로그래밍 놀이터/Web

[PHP] 배열( array ) tutorial

by 돼지왕 왕돼지 2013. 11. 21.
반응형


 PHP Tutorial 배열

 

[Tutorial] PHP Tutorial 배열


=====

생성


$products = array ( 'Tires', 'Oil', 'Spark Plugs' );

$numbers = range( 1, 10 );

$odds = range( 1, 10, 2 );

$letters = range( 'a', 'z' );



=====

배열 element 추가


배열은 길이 상관없이 추가하는 것도 가능하고, 정의없이 사용하는 것도 가능하다.


$products[4] = 'Fuses';

$products2[0] = 'Good Tires';



=====

foreach


foreach( $products as $current )


위와 같은 방식으로 foreach 를 쓰는 것이 general 하다.



=====

key-value array


$prices = array( 'Tires'=>100, 'oil'=>10, 'Spark Plugs'=>4 );


key-value array 는 for 문으로 돌 수 없고, foreach 나 each 를 이용한다.



=====

foreach


foreach( $prices as $key => $value )

echo $key.'='.$value.'<br />';



=====

each


while( $element = each( $prices ) ){

echo $element[ 'key' ];

echo '-';

echo $element[ 'value' ];

echo '<br />';

}


each 는 0( key ), 1 ( value ) index 로도 접근 가능하다.


each 를 사용하면 배열 포인터가 바뀐다. 따라서 배열을 여러번 사용하려면, reset() 함수를 사용하여 배열 포인터를 원래 위치로 돌리는 과정이 필요하다.



=====

list


list() 를 사용하면 더 괜찮은 구조체로 바꿀 수도 있다.


reset( $prices );

while( $list( $product, $price ) = each ( $prices ) ){

echo "$product - $price<br />";

}



=====

array 정렬


sort() 함수를 사용한다. 기본적으로 숫자와 문자에 대한 sort 를 제공한다.

두번째 인자로 SORT_REGULAR ( 기본값 ), SORT_NUMERIC, SORT_STRING 을 넘길 수 있다.



=====

key-value array 정렬


ksort() asort() 를 사용할 수 있다.

ksort 는 key sort 이고, asort 는 value sort 이다.


기본적으로는 모두 오름차순이며, 반대로 하고 싶으면 함수명에 r 이 붙은 함수를 호출하면 된다.



=====

다차원 array 정렬


다차월 배열의 경우는 비교함수를 직접 정의해야 한다.


function compare( $x, $y ){

if ( $x[1] == $x[2] ) return 0;

else if ( $x[1] < $y[1] ) return -1;

else return 1;

}


usort( $products, 'compare' ); // user sort 라는 의미



=====

기타 정렬


rsort(), arsort(), krsort().

uasort(), uksort() 를 사용하면 key, value sort 방식도 정할 수 있다.

uasort() 와 uksort() 는 그 값들이 배열일 때 사용하기 좋다.


user sort 의 경우 r 을 붙인 이름이 통하지 않고, 비교함수에서의 return 값을 반대로 적어주면 된다.



====

배열 순서 섞기


shuffle()


OS 종류에 따라서, 그리고 php 버전에 따라 제대로 작동하지 않는 경우가 있다.

항상 같은 패턴으로 섞는 현상이 발생할 수 있기 떄문에, 꼭 확인 후 사용해야 한다.



array_reverse()


array 를 반대순서로 만들어준다.




=====

파일 path


file( "filePath" ) 


filePath 의 내용을 읽어들여 한줄 한줄을 배열로 만든다.




=====

Split 으로 배열 생성하기


array explode( string separator, string string [, int limit] )


delimiter 를 사용하여 targetStr 을 구분한다.

일반의 Split 함수와 같은 녀석이라 보면 된다.




====

배열 탐색 함수들


each( $array )


포인터를 하나씩 앞으로 이동시키며, 값을 return



current( $array )


현재 pointer 에 해당하는 element return.



reset( $array )

end( $array )

next( $array )

pos( $array )

prev( $array )







=====

배열 요소들에 함수 적용하기


bool array_walk( array arr, string func [,mixed userdata])


func 는 (value, key, userdata ) 의 순으로 parameter 를 받는다.

이 때 value 는 &$value 와 같이 reference 로 받을수도 있다.




=====

배열의 수 세기


count( $array )

sizeof( $array )



array_count_values( $array )


이 녀석은 해당 집합의 카디널리티를 구한다.

즉 중복된 element 에 대해 key(element value), value(count) 배열을 만든다.




=====

배열을 스칼라 변수로 변환


extract( array array [, int extract_type] [, string prefix] );


배열의 key value 값을 일반 변수로 뽑아낸다.

extract_type 은 변수를 뽑아낼 때 변수가 이미 존재하는 경우 어떻게 할지를 결정하며,

prefix 는 key 앞에 붙는 prefix 를 지정한다.


extract_Type 은 다음과 같은 녀석들이 올 수 있다.


EXTR_OVERWRITE : 덮어쓰기

EXTR_SKIP : 스킵

EXTR_PREFIX_SAME : $prefix_key 로 변수를 만든다.

EXTR_PREFIX_ALL : 만드는 모든 변수 앞에 prefix 를 붙인다.

EXTR_PREFIX_INVALID : 숫자변수명 등의 경우에 변수 이름에 prefix 를 붙인다.

EXTR_IF_EXISTS : 변수가 이미 존재할 떄에만 값을 추출. 즉 미리 만들어진 변수에만 채운다.

EXTR_PREFIX_IF_EXISTS : 변수가 존재할 때만 prefix 를 붙인다.

EXTR_REFS : 참조 변수로 추출


보통 EXTR_OVERWRITE 와 EXTR_PREFIX_ALL 이 가장 많이 쓰인다,







=====

메일 보내기


bool mail( string to, string subject, string message [, string additiona_headers [, string additional_parameter]]);


additional 부분은 header 내용이며 RFC822 에 따른다.

mail() 함수는 PHP 에 설치되어 있어야 사용 가능하다.







반응형

댓글