본문 바로가기

PHP 배열 함수 정리

반응형

function pre($val){   
        echo '<pre>';   
        print_r($val);   
        echo  '</pre>';   

 
/*
배열생성
array
array = array(mixed)
http://php.net/manual/en/function.array.php
*/ 
$arr = array(1,2,3,4,5,6); 
pre($arr); 
$arr = array('a'=>'apple','b'=>'banana','c'=>'cherry'); 
pre($arr); 
$arr = array('one',5=>'two','three'); 
pre($arr); 
$arr = array(1,3,2=>8,4,0=>6); 
pre($arr); 
$arr = array('a'=>'apple','b'=>'banana','c'=>'cherry','d'=>array('do'=>array('dol'=>'dolphin','dou'=>'double'),'dr'=>'dragon','du'=>'duck','dw'=>'dwarf')); 
pre($arr); 
 
/*
배열의 원소를 변수에 할당
list
array = list(mixed)
http://php.net/manual/en/function.list.php
*/ 
$alphabet = array('apple','banana','coffee','dance','elf'); 
list($red,$yellow,$brown,,$game) = $alphabet; 
echo $game; 
 
/*
배열에서 포인터가 가리키는 원소의 키와 값을 가져와 배열로 반환
each
array = each(array_&$array)
http://php.net/manual/en/function.each.php
*/ 
$food = array('a'=>'apple', 'b'=>'banana', 'c'=>'cherry', 'd'=>'dragon', 'e'=>'egg', 'f'=>'fish'); 
pre(each($food)); 
reset($food); 
while (list($key, $val) = each($food)) { 
    echo "$key => $val" . " 
"; 

 
/*
연관배열로부터 현재 포인터가 가리키는 원소의 키를 반환
key
mixed = key(array_&$array)
http://php.net/manual/en/function.key.php
*/ 
$food = array('a'=>'apple', 'b'=>'banana', 'c'=>'cherry', 'd'=>'dragon', 'e'=>'egg', 'f'=>'fish'); 
while ($fruit_name = current($food)) { 
    if ($fruit_name == 'banana') { 
        echo key($food).' 
'; 
    } 
    next($food); 

 
/*
배열로부터 현재 포인터가 가리키는 원소의 값을 반환
current, pos
mixed = current(array_&$array)
http://php.net/manual/en/function.current.php
http://php.net/manual/en/function.pos.php
*/ 
$food = array('a'=>'apple', 'b'=>'banana', 'c'=>'cherry', 'd'=>'dragon', 'e'=>'egg', 'f'=>'fish'); 
var_dump(current($food)); 
 
/*
배열의 포인터를 다음 원소로 이동
next
mixed = next(array_&$array)
http://php.net/manual/en/function.next.php
*/ 
$food = array('a'=>'apple', 'b'=>'banana', 'c'=>'cherry', 'd'=>'dragon', 'e'=>'egg', 'f'=>'fish'); 
var_dump(next($food)); 
 
/*
배열의 포인터를 처음으로 이동
reset
mixed = reset(array_&$array)
http://php.net/manual/en/function.reset.php
*/ 
$food = array('a'=>'apple', 'b'=>'banana', 'c'=>'cherry', 'd'=>'dragon', 'e'=>'egg', 'f'=>'fish'); 
var_dump(reset($food)); 
 
/*
배열의 포인터를 이전 원소로 이동
prev
mixed = prev(array_&$array)
http://php.net/manual/en/function.prev.php
*/ 
$food = array('a'=>'apple', 'b'=>'banana', 'c'=>'cherry', 'd'=>'dragon', 'e'=>'egg', 'f'=>'fish'); 
var_dump(prev($food)); 
 
/*
배열의 포인터를 끝으로 이동
end
mixed = end(array_&$array)
http://php.net/manual/en/function.end.php
*/ 
$food = array('a'=>'apple', 'b'=>'banana', 'c'=>'cherry', 'd'=>'dragon', 'e'=>'egg', 'f'=>'fish'); 
var_dump(end($food)); 
 
/*
배열에 값이 존재하는지 확인
in_array
bool = in_array(mixed_needle, array_haystack)
http://php.net/manual/en/function.in-array.php
*/ 
$food = array('a'=>'apple', 'b'=>'banana', 'c'=>'cherry', 'd'=>'dragon', 'e'=>'egg', 'f'=>'fish', 'g'=>array('ginger','grape')); 
if (in_array("banana", $food)) { 
    echo "Got Banana"; 

if (in_array(array('ginger','grape'), $food, true)) { 
    echo "Got G Food"; 

 
/*
배열이 가진 원소의 갯수를 반환
count, sizeof
int = count(mixed_array_or_countable) 
http://php.net/manual/en/function.count.php
http://php.net/manual/en/function.sizeof.php
*/ 
$food = array('apple', 'banana', 'c'=>'cherry', 'd'=>'dragon', 'e'=>'egg', 'f'=>'fish', 'g'=>array('gi'=>'ginger','gr'=>'grape')); 
echo count($food, COUNT_RECURSIVE); // 9 
echo sizeof($food); // 7 
for ($i = 0; $i < count($food); $i++) 

 echo $food[$i]; 

 
/*
인자로 지정한 영역의 문자 또는 숫자로 구성된 배열을 생성
range
array = range(mixed_start, mixed_end)
http://php.net/manual/en/function.range.php
*/ 
$arr = range(0,10); 
$arr = range(0,100,2); 
$arr = range('a','h'); 
$arr = range('z','o'); 
foreach ($arr as &$value) 

 echo $value; 

 
/*
배열안 원소들의 순서를 섞는다
shuffle
bool = shuffle(array_&array)
http://php.net/manual/en/function.shuffle.php
*/ 
$numbers = range(1, 20); 
shuffle($numbers); 
foreach ($numbers as $number) { 
    echo "$number / "; 

 
/*
배열을 정렬
sort
bool = sort(array_&array)
http://php.net/manual/en/function.sort.php
SORT_REGULAR
SORT_NUMERIC
SORT_STRING
SORT_LOCALE_STRING
SORT_NATURAL
SORT_FLAG_CASE
*/ 
$food = array('pizza', 'banana', 'cake', 'apple', 'grape', 'fish', 'egg', 100, 200, 101, 10, 22); 
sort($food, SORT_NATURAL | SORT_FLAG_CASE); 
foreach ($food as $key => $val) { 
    echo "food[" . $key . "] = " . $val; 

 
/*
배열의 키를 기준으로 정렬
ksort
bool = ksort(array_&array)
http://php.net/manual/en/function.ksort.php
*/ 
$fruits = array('d'=>'lemon', 'a'=>'orange', 'c'=>'banana', 'b'=>'apple'); 
ksort($fruits); 
foreach ($fruits as $key => $val) { 
    echo "$key = $val "; 

 
/*
배열의 키를 유지한채 정렬
asort
bool = asort(array_&array)
http://php.net/manual/en/function.asort.php
*/ 
$number = array(123,321,88,23,11,15); 
asort($number); 
foreach ($number as $key => $val) { 
    echo "\$number[$key] = $val "; 

 
/*
배열을 거꾸로 정렬
rsort
bool = rsort(array_&array)
http://php.net/manual/en/function.rsort.php
*/ 
$fruits = array("d" => "lemon", "a" => "orange", "b" => "banana", "c" => "apple"); 
rsort($fruits); 
foreach ($fruits as $key => $val) { 
    echo "$key = $val "; 

 
/*
배열의 키를 유지한채 거꾸로 정렬
arsort
bool = arsort(array_&array)
http://php.net/manual/en/function.arsort.php
*/ 
$fruits = array("d" => "lemon", "a" => "orange", "b" => "banana", "c" => "apple"); 
arsort($fruits); 
foreach ($fruits as $key => $val) { 
    echo "$key = $val "; 

 
/*
배열의 키를 기준으로 거꾸로 정렬
krsort
bool = krsort(array_&array)
http://php.net/manual/en/function.krsort.php
*/ 
$fruits = array("a"=>"lemon", "d"=>"orange", "c"=>"banana", "b"=>"apple"); 
krsort($fruits); 
foreach ($fruits as $key => $val) { 
    echo "$key = $val "; 

 
/*
알고리즘을 이용하여 배열을 정렬
natsort
bool = natsort(array_&array)
http://php.net/manual/en/function.natsort.php
*/ 
$array1 = $array2 = array("img12.png", "img10.png", "img2.png", "img1.png"); 
 
asort($array1); 
echo "Standard sorting"; 
print_r($array1); // img1 img10 img12 img2 
 
natsort($array2); 
echo "Natural order sorting"; 
print_r($array2); // img1 img2 img10 img12 
 
echo "Negative numbers"; 
$negative = array('-5','3','-2','0','-1000','9','1'); 
print_r($negative); 
natsort($negative); 
print_r($negative); // -2 -5 -1000 0 1 3 9 
 
echo "Zero padding"; 
$zeros = array('09', '8', '10', '009', '011', '0');  
print_r($zeros); 
natsort($zeros); 
print_r($zeros); // 0 8 009 09 10 011 
 
echo "Other characters interfering"; 
$images_oops = array('image_1.jpg','image_12.jpg', 'image_21.jpg', 'image_4.jpg'); 
print_r($images_oops); 
natsort($images_oops); 
print_r($images_oops); // 1 4 12 21 
 
echo "Sort by keys"; 
$smoothie = array('orange' => 1, 'apple' => 1, 'yogurt' => 4, 'banana' => 4); 
print_r($smoothie); 
uksort( $smoothie, 'strnatcmp'); 
print_r($smoothie); // apple 1 banana 4 orange 1 yogurt 4 
 
/*
알고리즘을 이용하여 대소문자 구분없이 배열을 정렬
natcasesort
bool = natcasesort(array_&array)
http://php.net/manual/en/function.natcasesort.php
*/ 
$array1 = $array2 = array('IMG0.png', 'img12.png', 'img10.png', 'img2.png', 'img1.png', 'IMG3.png'); 
 
sort($array1); 
echo "Standard sorting"; 
print_r($array1); // IMG0 IMG3 img1 img10 img12 img2  
 
natcasesort($array2); 
echo "Natural order sorting (case-insensitive)"; 
print_r($array2); // IMG0 img1 img2 IMG3 img10 img12 
 
/*
배열에서 맨끝 원소를 제거
array_pop
mixed = array_pop(array_&array)
http://php.net/manual/en/function.array-pop.php
*/ 
$stack = array("orange", "banana", "apple", "raspberry"); 
$fruit = array_pop($stack); 
pre($stack); 
 
/*
배열의 맨끝에 원소를 추가
array_push
int = array_push(array_&array, mixed_value1, ...)
http://php.net/manual/en/function.array-push.php
*/ 
$stack = array("orange", "banana"); 
array_push($stack, "apple", "raspberry"); 
pre($stack); 
 
/*
배열에서 맨앞 원소를 제거
array_shift
mixed = array_shift(array_&array)
http://php.net/manual/en/function.array-shift.php
*/ 
$stack = array("orange", "banana", "apple", "raspberry"); 
$fruit = array_shift($stack); 
pre($stack); 
 
/*
배열의 맨앞에 원소를 추가
array_unshift
int = array_unshift(array_&array, mixed_value1, ...)
http://php.net/manual/en/function.array-unshift.php
*/ 
$queue = array("orange", "banana"); 
array_unshift($queue, "apple", "raspberry"); 
pre($queue); 
 
/*
배열에서 중복된 원소를 제거
array_unique
array = array_unique(array_array)
http://php.net/manual/en/function.array-unique.php
*/ 
$input = array("a" => "green", "red", "b" => "green", "blue", "red"); 
$result = array_unique($input); 
pre($result); // a green 0 red 1 blue 
 
$input = array(4, "4", "3", 4, 3, "3"); 
$result = array_unique($input); 
var_dump($result); // array(2) { [0]=> int(4) [2]=> string(1) "3" } 
 
/*
배열의 인덱스를 반환
array_values
array = array_values(array_array)
http://php.net/manual/en/function.array-values.php
*/ 
$array = array("size" => "XL", "color" => "gold"); 
pre(array_values($array)); // 0 XL 1 gold 
 
/*
배열의 키를 반환
array_keys
array = array_keys(array_array, mixed_search_value)
http://php.net/manual/en/function.array-keys.php
*/ 
$array = array(0 => 100, "color" => "red"); 
pre(array_keys($array)); // 0 0 1 color 
 
$array = array("blue", "red", "green", "blue", "blue"); 
pre(array_keys($array, "blue")); // 0 0 1 3 2 4 blue 에 대한 키만 반환 
 
$array = array("color" => array("blue", "red", "green"), 
               "size"  => array("small", "medium", "large")); 
pre(array_keys($array)); // 0 color 1 size 
 
/*
배열의 원소를 역순으로 정렬하여 반환
array_reverse
array = array_reverse(array_array)
http://php.net/manual/en/function.array-reverse.php
*/ 
$input  = array("php", 4.0, array("green", "red")); 
$reversed = array_reverse($input); 
$preserved = array_reverse($input, true);  
// true 하면 키를 보존하면서 역순으로 반환 
 
pre($input); 
pre($reversed); 
pre($preserved); 
 
/*
배열에서 하나 이상 원소를 랜덤하게 추출하여 반환
array_rand
mixed = array_rand(array_array, int_numreq)
http://php.net/manual/en/function.array-rand.php
*/ 
$input = array("Neo", "Morpheus", "Trinity", "Cypher", "Tank"); 
$rand_keys = array_rand($input, 2); 
// 2 가져올 원소 수, 기본값은 1 
echo $input[$rand_keys[0]]; 
echo $input[$rand_keys[1]]; 
 
/*
지정한 길이만큼 특정 값으로 배열 채우기
array_pad
array = array_pad(array_array, int_size, mixed_value)
http://php.net/manual/en/function.array-pad.php
*/ 
$input = array(12, 10, 9); 
$result = array_pad($input, 5, 0); 
pre($result); // 12, 10, 9, 0, 0 
$result = array_pad($input, -7, -1); 
pre($result); // -1, -1, -1, -1, 12, 10, 9 
$result = array_pad($input, 2, "noop"); 
pre($result); // 12 10 9 
 
/*
특정값으로 배열채우기
array_fill
array = array_fill(int_start_index, int_num)
http://php.net/manual/en/function.array-fill.php
*/ 
$a = array_fill(5, 6, 'banana'); 
$b = array_fill(-2, 3, 'pear'); 
pre($a); 
pre($b); 
 
/*
배열의 각 원소에 미리 정의한 함수를 적용
array_walk
bool = array_walk(array_&array, callable_callback)
http://php.net/manual/en/function.array-walk.php
*/ 
$fruits = array("d" => "lemon", "a" => "orange", "b" => "banana", "c" => "apple"); 
 
function test_alter(&$item1, $key, $prefix) 

    $item1 = "$prefix: $item1"; 

 
function test_print($item2, $key) 

    echo "$key. $item2"; 

 
echo "Before ...:"; 
array_walk($fruits, test_print); 
 
echo "... and after:"; 
array_walk($fruits, test_alter, 'fruit'); 
array_walk($fruits, test_print); 
 
/*
배열의 각 원소에 미리 정의한 함수를 적용. 이때 배열의 원소가 또 다른 배열을 포함한 경우에는 해당 배열에 대해서도 지정한 함수를 호출
array_walk_recursive
bool = array_walk_recursive(array_&array, callable_callback)
http://php.net/manual/en/function.array-walk-recursive.php
*/ 
$sweet = array('a' => 'apple', 'b' => 'banana'); 
$fruits = array('sweet' => $sweet, 'sour' => 'lemon'); 
 
function test_print($item, $key) 

    echo "$key holds $item 
"; 

 
array_walk_recursive($fruits, test_print); 
 
 
/*
여러개의 배열을 하나의 배열로 합침
array_merge
array = array_merge(array_array1, array_array2, ...)
http://php.net/manual/en/function.array-merge.php
*/ 
$array1 = array("color" => "red", 2, 4); 
$array2 = array("a", "b", "color" => "green", "shape" => "trapezoid", 4); 
$result = array_merge($array1, $array2); 
//키가 숫자일 경우 다른 숫자로 재부여 된다 
//변수+배열도 가능 array_merge((array)"foo", $array1, $array2); 
pre($result); 
 
/*
여러개의 배열을 하나의 배열로 합치되 문자열 키가 동일한 원소가 여러개 존재하는 경우 이들키를 갖는 모든 원소를 배열에 함께 병합
array_merge_recursive
array = array_merge_recursive(array_array1, array_array2, ...)
http://php.net/manual/en/function.array-merge-recursive.php
*/ 
$array1 = array("color" => array("favorite" => "red"), 5); 
$array2 = array(10, "color" => array("favorite" => "green", "blue")); 
$result = array_merge_recursive($array1, $array2); 
pre($result); // red 와 green 이 favorite 배열에 함께 들어감 
 
/*
다른 배열에는 없는 원소만으로 구성된 배열을 반환
array_diff
array = array_diff(array_array1, array_array2, ...)
http://php.net/manual/en/function.array-diff.php
*/ 
$array1 = array("a" => "green", "red", "blue", "red"); 
$array2 = array("b" => "green", "yellow", "red"); 
$result = array_diff($array1, $array2); 
pre($result); // 1 blue 
 
/*
다른 배열에는 없는 원소만으로 구성된 배열을 반환. 키와 값이 모두 일치하는 원소만을 제거한 나머지 원소를 배열로 반환
array_diff_assoc
array = array_diff_assoc(array_array1, array_array2, ...)
http://php.net/manual/en/function.array-diff-assoc.php
*/ 
$array1 = array("a" => "green", "b" => "brown", "c" => "blue", "red"); 
$array2 = array("a" => "green", "yellow", "red"); 
$result = array_diff_assoc($array1, $array2); 
pre($result); // b brown c blue 0 red 
 
/*
다른 배열에는 없는 키를 갖는 원소만으로 구성된 배열을 반환
array_diff_key
array = array_diff_key(array_array1, array_array2, ...)
http://php.net/manual/en/function.array-diff-key.php
*/ 
$array1 = array('blue'  => 1, 'red'  => 2, 'green'  => 3, 'purple' => 4); 
$array2 = array('green' => 5, 'blue' => 6, 'yellow' => 7, 'cyan'   => 8); 
pre(array_diff_key($array1, $array2)); // red 2 purple 4 
 
/*
다른 모든 배열에도 존재하는 원소만으로 구성된 배열을 반환
array_intersect
array = array_intersect(array_array1, array_array2, ...)
http://php.net/manual/en/function.array-intersect.php
*/ 
$array1 = array("a" => "green", "red", "blue"); 
$array2 = array("b" => "green", "yellow", "red"); 
$result = array_intersect($array1, $array2); 
pre($result); // a green 0 red 
 
/*
키와 값이 모두 일치하는 원소중에서 모든 배열에 존재하는 원소만으로 구성된 배열을 반환
array_intersect_assoc
array = array_intersect_assoc(array_array1, array_array2, ...)
http://php.net/manual/en/function.array-intersect-assoc.php
*/ 
$array1 = array("a" => "green", "b" => "brown", "c" => "blue", "red"); 
$array2 = array("a" => "green", "b" => "yellow", "blue", "red"); 
$result_array = array_intersect_assoc($array1, $array2); 
pre($result_array); //a green 
 
/*
배열에 지정한 이름의 키를 갖는 원소가 존재하는지 검사
array_key_exists
bool = array_key_exists(mixed_key, array_array)
http://php.net/manual/en/function.array-key-exists.php
*/ 
$search_array = array('first' => null, 'second' => 4); 
if (array_key_exists('first', $search_array)) { 
    echo "The 'first' element is in the array"; 

isset($search_array['first']); // false , NULL 이므로 
array_key_exists('first', $search_array); // true 
 
/*
주어진 값으로 배열을 검사하고 만일 존재하면 해당 원소의 키를 반환
array_search
mixed = array_search(mixed_needle, array_haystack)
http://php.net/manual/en/function.array-search.php
*/ 
$array = array(0 => 'blue', 1 => 'red', 2 => 'green', 3 => 'red'); 
$key = array_search('green', $array); // 2; 
$key = array_search('red', $array);   // 1; 
 
/*
배열의 모든 문자열 키를 대문자 또는 소문자로 바꿈
array_change_key_case
array = array_change_key_case(array_array, int_case)
http://php.net/manual/en/function.array-change-key-case.php
CASE_UPPER
CASE_LOWER
*/ 
$input_array = array("FirSt" => 1, "SecOnd" => 3); 
pre(array_change_key_case($input_array, CASE_UPPER)); 
 
/*
배열의 각 원소에 사용자가 정의한 함수를 적용하고 적용한 후의 결과를 배열로 반환
array_map
array = array_map(callable_callback, array_array1, ...)
http://php.net/manual/en/function.array-map.php
*/ 
 
// 1 8 27 64 125 
function cube($n) 

    return($n * $n * $n); 

$a = array(1, 2, 3, 4, 5); 
$b = array_map(cube, $a); 
pre($b); 
 
// 2 4 6 8 10 
$func = function($value) { 
    return $value * 2; 
}; 
pre(array_map($func, range(1, 5))); 
 
// uno dos tres cuatro cinco 
function show_Spanish($n, $m) 

    return("The number $n is called $m in Spanish"); 

function map_Spanish($n, $m) 

    return(array($n => $m)); 

$a = array(1, 2, 3, 4, 5); 
$b = array("uno", "dos", "tres", "cuatro", "cinco"); 
$c = array_map(show_Spanish, $a, $b); 
pre($c); 
$d = array_map(map_Spanish, $a , $b); 
pre($d); 
 
// 1 one uno, 2 two dos, 3 three tres, ... 
$a = array(1, 2, 3, 4, 5); 
$b = array("one", "two", "three", "four", "five"); 
$c = array("uno", "dos", "tres", "cuatro", "cinco"); 
$d = array_map(null, $a, $b, $c); 
pre($d); 
 
// stringkey value, 0 value 
$arr = array("stringkey" => "value"); 
function cb1($a) { 
    return array ($a); 

function cb2($a, $b) { 
    return array ($a, $b); 

pre(array_map(cb1, $arr)); 
pre(array_map(cb2, $arr, $arr)); 
pre(array_map(null, $arr)); 
pre(array_map(null, $arr, $arr)); 
 
/*
배열에 있는 원소의 합을 계산하여 반환
array_sum
number = array_sum(array_array)
http://php.net/manual/en/function.array-sum.php
*/ 
$a = array(2, 4, 6, 8); 
echo "sum(a) = " . array_sum($a); // 20 
 
$b = array("a" => 1.2, "b" => 2.3, "c" => 3.4); 
echo "sum(b) = " . array_sum($b); //6.9

반응형

댓글


Copyright ⓒ SmartWeb All rights reserved.