2015년 2월 3일 화요일

PHP 배열 함수 정리


function pre($val){  
        echo '
';  
        print_r($val);  
        echo  '
'; } /* 배열생성 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

댓글 없음:

댓글 쓰기

플러터 단축키

1. 위젯 감싸기/벗기기 비주얼 스튜디오 :   Cmd + . 안드로이드 스튜디오 : Alt + Enter 2. 코드 정렬 비주얼 스튜디오 : Ctrl + S 안드로이드 스튜디오 : Ctlr + Alt + L 3. StatelessWidget ->...