PHP 주요레퍼런스/배열 함수

array_walk

웹 개발자의 비상 2011. 8. 29. 22:32
bool array_walk( array &array, callback funcname [, mixed userdata] )
배열의 모든 원소에 미리 정의한 함수를 적용한다.

array 배열의 모든 원소에 funcname 함수를 적용하여 배열에 반영한다.
이때 미리 선언되야하는 funcname 함수는 반듯이 값과 키를 인자로 갖는 함수로 만들어야 하며 추가 인자를 지정하면 array_walk 함수에서는 userdata로 넘겨서 반영한다.

funcname 인자로 받은 값이 변경되는 경우는 참조에 의한 호출 방식을 사용해야하는데 이럴경우 &값과 같이 &을 붙여 참조에 의한 호출임을 명시해야만 한다.

예제

<?
// 원소의 인덱스 및 값을 출력한다.
function print_foods($value, $key) {
echo "\$foods[$key]" . " : " . $value . "<br>";
}

// 원소의 값을 대문자로 바꾼다.
function modify_foods(&$value, $key, $data) {
$value = $data."_".strtoupper($value);
}

$foods = array("food" => "pizza", "beverage" => "cola", "cuisine" => "pasta", "fruit" => "apple");

// 배열 $foods의 모든 원소에 순서대로 print_foods() 함수를 실행한다.
array_walk($foods, "print_foods");
/*
$foods[food] : pizza
$foods[beverage] : cola
$foods[cuisine] : pasta
$foods[fruit] : apple
*/

// 배열 $foods의 모든 원소에 순서대로 modify_foods() 함수를 실행한다.
array_walk($foods, "modify_foods", "dotbogi");

array_walk($foods, "print_foods");
/*
$foods[food] : dotbogi_PIZZA
$foods[beverage] : dotbogi_COLA
$foods[cuisine] : dotbogi_PASTA
$foods[fruit] : dotbogi_APPLE
*/
?>


728x90

'PHP 주요레퍼런스 > 배열 함수' 카테고리의 다른 글

array_merge  (0) 2011.08.29
array_walk_recursive  (0) 2011.08.29
array_fill  (0) 2011.08.29
array_pad  (0) 2011.08.29
array_rand  (0) 2011.08.29