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
'PHP∵SCRIPT' 카테고리의 다른 글
PHP 클래스 사용방법 정리 (0) | 2016.11.17 |
---|---|
[JQUERY] 아코디언 슬라이드 메뉴 만들기 (0) | 2016.11.08 |
[jQuery] jQuery Quick API (0) | 2016.10.21 |
[PHP] dirname()함수와 $ SERVER 관련 상수들 (0) | 2016.10.21 |
PHP 파일 입출력 (0) | 2016.02.03 |
PHP 문자열 대소문자 변환 함수들 (0) | 2016.02.03 |
PHP 싱글쿼테이션(') 및 특수문자 처리하기 (0) | 2016.02.03 |
PHP 문장에 포함된 기호나 숫자등을 추출하기 (0) | 2016.02.03 |
댓글