찾다
백엔드 개발PHP 튜토리얼콜백 함수 및 배열

콜백 함수 및 배열

Apr 14, 2018 pm 04:37 PM
기능정렬

이 글에서 공유한 내용은 PHP 콜백 함수 및 배열에 관한 것입니다. 특정 참조 값이 있습니다. 필요한 친구는

array_filter(), array_map(), array_reduce(), array_walk() 사용법 비교를 참조할 수 있습니다.

array_filter콜백 함수를 사용하여 배열의 셀을 필터링하세요

설명: array array_filter ( array $배열$array [, callable $callback [, int $flag [, callable $callback

[, 🎜🎜🎜int🎜 $flag 🎜 = 0🎜🎜🎜 ]] )🎜🎜🎜

依次将 배열array 数组中的每个值传递到 callback 函数。如果 callback 函数返回 true,则 array 数组中的每个值传递到 콜백 函数。如果 콜백
 函数返回 true,则 
배열
 数组的当前值会被包含는 返回的结果数组中,否则,将不返回任何值给结果数组。

数组的键name保留不变。

参数说明:
array
: ㅋㅋㅋ

 如果没有提供 콜백callback 函数, 将删除 array 中所有等值为 FALSE 的条目。

flag:决定callback接收的参数形式 

  • ARRAY_FILTER_USE_KEY - callback 函数, 将删除 배열

     中所有等值为 🎜FALSE🎜 적条目。🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜flag🎜:🎜决定🎜 콜백 🎜接收的参数形式 
    🎜🎜🎜🎜🎜🎜
    • 🎜ARRAY_FILTER_USE_KEY - 콜백接受键名 作为的唯一参数🎜🎜
    • ARRAY_FILTER_USE_BOTH - callback키 이름과 키 값을 모두 허용합니다. ​​

    반환 값: 필터링된 배열을 반환합니다.

    예 1:

    function odd($var){    return($var & 1);}function even($var){    
    return(!($var & 1));
    }
    $array1 = array("a"=>1, "b"=>2, "c"=>3, "d"=>4, "e"=>5);
    $array2 = array(6, 7, 8, 9, 10, 11, 12);echo "Odd :\n";print_r(array_filter($array1, "odd"));
    echo "<br>Even:\n";
    print_r(array_filter($array2, "even"));
    结果:Odd : Array ( [a] => 1 [c] => 3 [e] => 5 ) 
    Even: Array ( [0] => 6 [2] => 8 [4] => 10 [6] => 12 )

    분석: &는 PHP의 AND 연산이며, 이진 형식에 따라 배열의 값이 전달되고...0000 0001( 앞에 0이 몇 개 있는지) 운영체제와 관련이 있습니다. 이해가 안 되시면 기본 지식을 채워넣고 AND 연산을 하여 결과가 true이면 전달된 값을 반환해 드립니다. 결과 배열.

    예제 2: 콜백 함수가 없는 경우 배열의 값이 true이면 배열의 값이 결과 배열로 반환됩니다.

    $entry = array(    0 => 'foo',    1 => false,    2 => -1,    3 => null,    4 => '');
    print_r(array_filter($entry));
    结果:Array ( [0] => foo [2] => -1 )

    예 3:키 값만 있는 경우 콜백 함수는 키 값을 받을 수 있습니다. 두 키-값 쌍이 모두 포함된 경우 첫 번째 매개변수는 값을 받고, 두 번째 매개변수는 키-값을 받습니다

    $arr = ['a' => 1, 'b' => 2, 'c' => 3, 'd' => 4];
    var_dump(array_filter($arr, function($k) {    
    return $k == 'b';}, ARRAY_FILTER_USE_KEY));
    var_dump(array_filter($arr, function($v, $k) {    
    return $k == 'b' || $v == 4;}, ARRAY_FILTER_USE_BOTH));
    结果:
    D:\studySoftware\wamp64\www\test.php:
    5:array (size=1)  'b' => int 2D:
    \studySoftware\wamp64\www\test.php:
    8:array (size=2)  'b' => int 2  'd' => int 4
    array_map — 为数组的每个元素应用回调函数

    说明:array array_map ( callable $callback , array $array1 [, array $... ] )

    array_map():返回数组,是为 배열1array1 每个元素应用 callback函数之后的数组。 callback 函数形参的数量和传给 array_map() 数组数量,两者必须一样。

    参数说明:

    callback回调函数,应用到每个数组里的每个元素。

    array1数组,遍历运行 callback 每个元素应용 콜백函数之后的数组。 

    콜백🎜 给 🎜🎜🎜array_map()🎜🎜🎜 数组数weight,两者必须一样。🎜
    🎜🎜🎜参数说明:🎜🎜콜백 🎜:🎜回调函数,应用到每个数组里的每个元素。🎜🎜🎜array1🎜:🎜数组,遍历运行 🎜콜백🎜 函数。🎜🎜

    ...数组列表,每个都遍历运行 callback 函数。

    返回值:返回数组,包含 callback 函数处理之后 array1 的所有元素。

    例1:

    function cube($n){    
    return($n * $n * $n);
    }$a = array(1, 2, 3, 4, 5);
    $b = array_map("cube", $a);
    print_r($b);
    结果:
    Array ( [0] => 1 [1] => 8 [2] => 27 [3] => 64 [4] => 125 )


    例2:如果几个数组的元素数量不一致:空元素(null)会扩展短那个数组,直到长度和最长的数组一样。

    function cube($n,$x){    
    echo "n的值:{$n},x的值:{$x}<br>";    
    return ($n + $x);}$a = array(1,2,3,4,5);
    $b = array(10,20);
    $c = array_map("cube",$a,$b);
    print_r($c);
    /*
    结果:
    n的值:
    1,x的值:10n的值:
    2,x的值:20n的值:
    3,x的值:n的值:
    4,x的值:n的值:
    5,x的值:Array ( [0] => 11 [1] => 22 [2] => 3 [3] => 4 [4] => 5 ) 
    */

    例3:此函数有个有趣的用法:传入 NULL 作为回调函数的名称,将创建多维数组(一个数组,内部包含数组。)

    $a = array(1, 2, 3);
    $b = array("one", "two", "three");
    $c = array("uno", "dos", "tres");
    $d = array_map(null, $a, $b, $c);
    echo "<pre class="brush:php;toolbar:false">";
    print_r($d);
    echo "
    ";

    结果如下:


    例4:如果仅传入一个数组,键(key)会保留;传入多个数组,键(key)是整型数字的序列。

    $arr = array("stringkey" => "value");
    function cb1($a) {    
    return array ($a);
    }function cb2($a, $b) {    
    return array ($a, $b);
    }var_dump(array_map("cb1", $arr));
    var_dump(array_map("cb2", $arr, $arr));
    var_dump(array_map(null,  $arr));
    var_dump(array_map(null, $arr, $arr));

    结果如下:

    array_reduce콜백 함수를 사용하여 반복적으로 배열을 단일 값으로 줄입니다.

    Description: mixed array_reduce ( 배열 $array$array , callable $callback [, mixed $initial = NULL , callable $callback

    🎜 [, 🎜🎜🎜mixed🎜 $initial 코드 ><span class="initializer" style="color:#993366;"> = <strong style="font-weight:bolder;font-style:normal;"><code style="font-style:normal; 글꼴 -variant:normal;font-weight:400;font-family:'Fira Mono', 'Source Code Pro', monospace;color:rgb(153,51,102);margin:0px;">NULL🎜 🎜 🎜🎜 ] )🎜🎜

    array_reduce()콜백callback 迭代地作用到 array배열을 배열의 각 셀에 배치하여 배열을 단일 값으로 줄입니다.

    매개변수:

    array: 입력 배열.

    🎜

    callbackmixed callback ( mixed $carry$carry , mixed $item )

           carry:携带上次迭代里的值; 如果本次迭代是第一次,那么这个值是 initial ,
    mixed
    $item

    )🎜🎜🎜🎜🎜🎜 🎜carry: 🎜마지막 반복의 값을 전달합니다. 이 반복이 처음인 경우 이 값은 🎜초기🎜. 🎜🎜🎜🎜🎜🎜

    item: 이 반복의 가치를 전달합니다.

    initial: 선택적 매개변수 initial가 지정된 경우 이 매개변수는 처리가 시작되기 전이나 처리가 끝나고 마지막 결과에 대해 배열이 비어 있을 때(즉, array 매개변수가 비어 있으면 initialarray_reduce())의 반환 값으로 사용됩니다.

    官网例子:

    function sum($carry, $item){    
    $carry += $item;    
    return $carry;
    }
    function product($carry, $item){    
    $carry *= $item;    
    return $carry;
    }
    $a = array(1, 2, 3, 4, 5);
    $x = array();
    var_dump(array_reduce($a, "sum")); 
    // int(15)var_dump(array_reduce($a, "product", 10)); 
    // int(1200), because: 10*1*2*3*4*5var_dump(array_reduce($x, "sum", "No data to reduce")); 
    // string(17) "No data to reduce"

    这里讨论array为空的情况:

    function sum($carry, $item){    
    echo "如果这里执行了,就打印...";    
    return $carry;}$x = array();
    print_r(array_reduce($x, "sum",array("a","b")));
    //结果:
    Array ( [0] => a [1] => b )

    可以看出,当数组为空的时候,回调函数根本就没有执行,而是把initial作为array_reduce返回值


    array_walk — 使用用户自定义函数对数组中的每个元素做回调处理

    说明:bool array_walk ( array &$array&$array , callable $callback [, mixed $userdata = NULL ] )

    将用户自定义函数 funcname 应用到 array , 
    callable
     $callback

    🎜 [, 🎜🎜🎜mixed🎜 $userdata = NULL🎜🎜🎜 ] )🎜🎜🎜

    🎜🎜将사용户자정义函数 🎜funcname🎜 应용到 🎜배열🎜 数组中的每个单元。🎜🎜🎜🎜🎜

    array_walk()array 내부 배열 포인터의 영향을 받지 않습니다. array_walk()는 포인터의 위치에 관계없이 전체 배열을 탐색합니다.

    매개변수 설명:

    array: 입력 배열.

    callback: 일반적으로 콜백callback 接受两个参数。array 参数的值作为第一个,键名作为第二个

    Note:

    如果 callback 需要直接作用于数组中的值,则给 callback은 두 개의 매개변수를 허용합니다.

    <span style="color:#FF0000;"> 배열의 값</span>

    매개변수가 첫 번째로 사용되고, 키 이름이 두 번째로 사용됩니다.

    🎜🎜🎜🎜Note🎜:🎜

    콜백은 배열의 값에 대해 직접 작동해야 하며, 콜백 의 첫 번째 매개변수는 참조로 지정됩니다. 이러한 셀을 변경하면 원래 배열 자체도 변경됩니다. 🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜참고🎜:🎜

    매개변수 수가 예상보다 많은 경우 내장 함수(예: strtolower())에 전달하면 경고가 발생하므로 funcname. funcname


    只有 array배열 값만 변경할 수 있으며, 콜백 함수에서 배열 자체의 구조를 변경하면 안 됩니다. 예를 들어 단위 추가/삭제, 단위 설정 해제 등이 있습니다.

    array_walk()
    가 변경되는 배열이 변경되면 이 함수의 동작은 정의되지 않고 예측할 수 없습니다.

    🎜🎜🎜🎜🎜🎜

    userdata: 선택적 매개변수가 제공되는 경우 사용자 데이터userdata,将被作为第三个参数传递给 callback funcname는 세 번째 매개변수 funcname.


    🎜

    返回值:成功时返回 TRUE, 或者在失败时返回 FALSE


    例子:

    $fruits = array("d" => "lemon", "a" => "orange", "b" => "banana");
    function test_alter(&$item1, $key, $prefix){    
    echo "$item1=$key=$prefix<br>";   
    $item1 = "$prefix: $item1";
    }function test_print($item2, $key){   
     echo "$key. $item2<br>\n";}echo "Before ...:<br>";
     array_walk($fruits, 'test_print');array_walk($fruits, 'test_alter', 'fruit');echo "... and after:<br>";
     array_walk($fruits, 'test_print');
     /*
     Before ...:
     d. lemona. orange
     b. bananalemon=d=fruitorange=a=fruitbanana=b=fruit... and after:
     d. fruit: 
     lemona. fruit: 
     orangeb. fruit: 
     banana
     */


               

위 내용은 콜백 함수 및 배열의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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

PHP는 전자 상거래, 컨텐츠 관리 시스템 및 API 개발에 널리 사용됩니다. 1) 전자 상거래 : 쇼핑 카트 기능 및 지불 처리에 사용됩니다. 2) 컨텐츠 관리 시스템 : 동적 컨텐츠 생성 및 사용자 관리에 사용됩니다. 3) API 개발 : 편안한 API 개발 및 API 보안에 사용됩니다. 성능 최적화 및 모범 사례를 통해 PHP 애플리케이션의 효율성과 유지 보수 성이 향상됩니다.

PHP : 대화식 웹 컨텐츠를 쉽게 만들 수 있습니다PHP : 대화식 웹 컨텐츠를 쉽게 만들 수 있습니다Apr 14, 2025 am 12:15 AM

PHP를 사용하면 대화식 웹 컨텐츠를 쉽게 만들 수 있습니다. 1) HTML을 포함하여 컨텐츠를 동적으로 생성하고 사용자 입력 또는 데이터베이스 데이터를 기반으로 실시간으로 표시합니다. 2) 프로세스 양식 제출 및 동적 출력을 생성하여 htmlspecialchars를 사용하여 XSS를 방지합니다. 3) MySQL을 사용하여 사용자 등록 시스템을 작성하고 Password_Hash 및 전처리 명세서를 사용하여 보안을 향상시킵니다. 이러한 기술을 마스터하면 웹 개발의 효율성이 향상됩니다.

PHP 및 Python : 두 가지 인기있는 프로그래밍 언어를 비교합니다PHP 및 Python : 두 가지 인기있는 프로그래밍 언어를 비교합니다Apr 14, 2025 am 12:13 AM

PHP와 Python은 각각 고유 한 장점이 있으며 프로젝트 요구 사항에 따라 선택합니다. 1.PHP는 웹 개발, 특히 웹 사이트의 빠른 개발 및 유지 보수에 적합합니다. 2. Python은 간결한 구문을 가진 데이터 과학, 기계 학습 및 인공 지능에 적합하며 초보자에게 적합합니다.

PHP의 지속적인 관련성 : 여전히 살아 있습니까?PHP의 지속적인 관련성 : 여전히 살아 있습니까?Apr 14, 2025 am 12:12 AM

PHP는 여전히 역동적이며 현대 프로그래밍 분야에서 여전히 중요한 위치를 차지하고 있습니다. 1) PHP의 단순성과 강력한 커뮤니티 지원으로 인해 웹 개발에 널리 사용됩니다. 2) 유연성과 안정성은 웹 양식, 데이터베이스 작업 및 파일 처리를 처리하는 데 탁월합니다. 3) PHP는 지속적으로 발전하고 최적화하며 초보자 및 숙련 된 개발자에게 적합합니다.

PHP의 현재 상태 : 웹 개발 동향을 살펴보십시오PHP의 현재 상태 : 웹 개발 동향을 살펴보십시오Apr 13, 2025 am 12:20 AM

PHP는 현대 웹 개발, 특히 컨텐츠 관리 및 전자 상거래 플랫폼에서 중요합니다. 1) PHP는 Laravel 및 Symfony와 같은 풍부한 생태계와 강력한 프레임 워크 지원을 가지고 있습니다. 2) Opcache 및 Nginx를 통해 성능 최적화를 달성 할 수 있습니다. 3) PHP8.0은 성능을 향상시키기 위해 JIT 컴파일러를 소개합니다. 4) 클라우드 네이티브 애플리케이션은 Docker 및 Kubernetes를 통해 배포되어 유연성과 확장 성을 향상시킵니다.

PHP 대 기타 언어 : 비교PHP 대 기타 언어 : 비교Apr 13, 2025 am 12:19 AM

PHP는 특히 빠른 개발 및 동적 컨텐츠를 처리하는 데 웹 개발에 적합하지만 데이터 과학 및 엔터프라이즈 수준의 애플리케이션에는 적합하지 않습니다. Python과 비교할 때 PHP는 웹 개발에 더 많은 장점이 있지만 데이터 과학 분야에서는 Python만큼 좋지 않습니다. Java와 비교할 때 PHP는 엔터프라이즈 레벨 애플리케이션에서 더 나빠지지만 웹 개발에서는 더 유연합니다. JavaScript와 비교할 때 PHP는 백엔드 개발에서 더 간결하지만 프론트 엔드 개발에서는 JavaScript만큼 좋지 않습니다.

PHP vs. Python : 핵심 기능 및 기능PHP vs. Python : 핵심 기능 및 기능Apr 13, 2025 am 12:16 AM

PHP와 Python은 각각 고유 한 장점이 있으며 다양한 시나리오에 적합합니다. 1.PHP는 웹 개발에 적합하며 내장 웹 서버 및 풍부한 기능 라이브러리를 제공합니다. 2. Python은 간결한 구문과 강력한 표준 라이브러리가있는 데이터 과학 및 기계 학습에 적합합니다. 선택할 때 프로젝트 요구 사항에 따라 결정해야합니다.

PHP : 웹 개발의 핵심 언어PHP : 웹 개발의 핵심 언어Apr 13, 2025 am 12:08 AM

PHP는 서버 측에서 널리 사용되는 스크립팅 언어이며 특히 웹 개발에 적합합니다. 1.PHP는 HTML을 포함하고 HTTP 요청 및 응답을 처리 할 수 ​​있으며 다양한 데이터베이스를 지원할 수 있습니다. 2.PHP는 강력한 커뮤니티 지원 및 오픈 소스 리소스를 통해 동적 웹 컨텐츠, 프로세스 양식 데이터, 액세스 데이터베이스 등을 생성하는 데 사용됩니다. 3. PHP는 해석 된 언어이며, 실행 프로세스에는 어휘 분석, 문법 분석, 편집 및 실행이 포함됩니다. 4. PHP는 사용자 등록 시스템과 같은 고급 응용 프로그램을 위해 MySQL과 결합 할 수 있습니다. 5. PHP를 디버깅 할 때 error_reporting () 및 var_dump ()와 같은 함수를 사용할 수 있습니다. 6. 캐싱 메커니즘을 사용하여 PHP 코드를 최적화하고 데이터베이스 쿼리를 최적화하며 내장 기능을 사용하십시오. 7

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
4 몇 주 전By尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

VSCode Windows 64비트 다운로드

VSCode Windows 64비트 다운로드

Microsoft에서 출시한 강력한 무료 IDE 편집기

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

WebStorm Mac 버전

WebStorm Mac 버전

유용한 JavaScript 개발 도구

안전한 시험 브라우저

안전한 시험 브라우저

안전한 시험 브라우저는 온라인 시험을 안전하게 치르기 위한 보안 브라우저 환경입니다. 이 소프트웨어는 모든 컴퓨터를 안전한 워크스테이션으로 바꿔줍니다. 이는 모든 유틸리티에 대한 액세스를 제어하고 학생들이 승인되지 않은 리소스를 사용하는 것을 방지합니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경