>백엔드 개발 >PHP 튜토리얼 >PHP에서 익명 함수 사용하기 PHP 함수 반환 값 PHP 배열 PHP 날짜 함수

PHP에서 익명 함수 사용하기 PHP 함수 반환 값 PHP 배열 PHP 날짜 함수

WBOY
WBOY원래의
2016-07-29 08:53:171448검색

기존 규칙은 먼저 코드를 작성한 다음 이야기하는 것입니다. PHP에서 익명 함수 사용하기 PHP 함수 반환 값 PHP 배열 PHP 날짜 함수

<?php


function showArray($cols)
{
&#160; &#160; foreach ($cols as $obj) {
&#160; &#160; &#160; &#160; echo $obj . " ";
&#160; &#160; }
&#160; &#160; echo "<br>";
}


function showObj($obj)
{
    echo $obj . " ";
}


//mswap传入的是引用类型。
function mswap(&$a, &$b)
{
    $tmp = $a;
    $a   = $b;
    $b   = $tmp;
}


function bubbleSort(&$cols)
{
    $len = count($cols);
    for ($i = 0; $i < $len; $i++) {
&#160; &#160; &#160; &#160; for ($j = 1; $j < $len - $i; $j++) {
&#160; &#160; &#160; &#160; &#160; &#160; if ($cols[$j - 1] > $cols[$j]) {
                mswap($cols[$j - 1], $cols[$j]);
            }
        }
    }
}


$data = array(
    8,
    2,
    3,
    9,
    0,
    45,
    35,
    235
);
//排序
bubbleSort($data);
//打印数组
showArray($data);
//使用回调函数依次遍历打印数组
array_map('showObj', $data);
echo "<br>";
//使用匿名函数依次遍历打印数组
array_map(create_function('$obj', 'echo $obj." " ;'), $data);
?>
프로그램 출력:


코드의 기능은 매우 간단합니다. 먼저 배열을 초기화한 다음 정렬하고 마지막으로 세 가지 방법으로 인쇄합니다.

정렬 알고리즘은 가장 간단한 버블 정렬을 사용하므로 이에 대해서는 자세히 설명하지 않습니다.

주의할 점은 다음과 같습니다.

(1) 정렬 기능과 스왑 기능 모두 전달 참조 방식을 사용합니다. 값 전달 방법을 사용하면 정렬 및 교체 기능이 적용되지 않습니다. 왜냐하면 이 때 함수는 실제로 매개변수 개체의 복사본에서 작동하기 때문입니다.

(2) array_map은 PHP와 함께 제공되며, 그 기능은 배열의 각 개체에 대해 전달된 함수를 순서대로 호출하는 것입니다. 이 방법을 콜백이라고 합니다.

(3) create_function은 익명 함수를 생성할 수 있습니다. 마지막으로 인쇄된 예에서 array_map에 대한 인수로 사용되는 것은 생성된 익명 함수입니다.

실제로 숙련된 프로그래머는 C++11과 PHP 모두에서 익명 함수가 비효율적이라는 것을 알고 있습니다. 그렇다면 왜 익명 함수를 사용합니까? C# 및 Java의 새로운 표준도 이를 지원하는 이유는 무엇입니까?

유명한 기능은 직관적인 것처럼 보이지만 관리 비용이 발생하기 때문입니다. 기능이 하나 더 있다는 것은 관리할 공간이 하나 더 있다는 의미입니다. 그리고 "마이크로" 코드 조각의 경우 이름이 지정된 함수를 작성하는 것만으로는 충분하지 않은 것 같습니다. 그러나 이것이 익명 함수가 남용될 수 있다는 의미는 아닙니다. 코드 조각이 너무 큰 경우 익명 함수를 사용하면 가독성이 심각하게 손상됩니다. 익명 함수의 사용은 상황에 따라 다릅니다.

위 내용은 PHP와 함수를 포함하여 PHP에서 익명 함수를 사용하는 방법을 소개한 내용으로, PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.