목차
array_filter콜백 함수를 사용하여 배열의 셀을 필터링하세요
" >array_filter콜백 함수를 사용하여 배열의 셀을 필터링하세요
array_walk — 使用用户自定义函数对数组中的每个元素做回调处理" >array_walk — 使用用户自定义函数对数组中的每个元素做回调处理
백엔드 개발 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으로 문의하세요.

핫 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. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 채팅 명령 및 사용 방법
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

PHP 어레이 딥 카피(Array Deep Copy) 기술: 다양한 방법을 사용하여 완벽한 카피 달성 PHP 어레이 딥 카피(Array Deep Copy) 기술: 다양한 방법을 사용하여 완벽한 카피 달성 May 01, 2024 pm 12:30 PM

PHP에서 배열을 깊게 복사하는 방법에는 json_decode 및 json_encode를 사용한 JSON 인코딩 및 디코딩이 포함됩니다. array_map 및 clone을 사용하여 키와 값의 전체 복사본을 만듭니다. 직렬화 및 역직렬화를 위해 직렬화 및 역직렬화를 사용합니다.

PHP 배열 키 값 뒤집기: 다양한 방법의 성능 비교 분석 PHP 배열 키 값 뒤집기: 다양한 방법의 성능 비교 분석 May 03, 2024 pm 09:03 PM

PHP 배열 키 값 뒤집기 방법의 성능 비교는 array_flip() 함수가 대규모 배열(100만 개 이상의 요소)에서 for 루프보다 더 나은 성능을 발휘하고 시간이 덜 걸리는 것을 보여줍니다. 키 값을 수동으로 뒤집는 for 루프 방식은 상대적으로 시간이 오래 걸립니다.

Excel 함수 수식의 전체 모음 Excel 함수 수식의 전체 모음 May 07, 2024 pm 12:04 PM

1. SUM 함수는 열이나 셀 그룹의 숫자를 합하는 데 사용됩니다(예: =SUM(A1:J10)). 2. AVERAGE 함수는 열이나 셀 그룹에 있는 숫자의 평균을 계산하는 데 사용됩니다(예: =AVERAGE(A1:A10)). 3. COUNT 함수, 열이나 셀 그룹의 숫자나 텍스트 수를 세는 데 사용됩니다. 예: =COUNT(A1:A10) 4. IF 함수, 지정된 조건을 기반으로 논리적 판단을 내리고 결과를 반환하는 데 사용됩니다. 해당 결과.

PHP 배열 심층 복사 모범 사례: 효율적인 방법 발견 PHP 배열 심층 복사 모범 사례: 효율적인 방법 발견 Apr 30, 2024 pm 03:42 PM

PHP에서 배열 전체 복사를 수행하는 가장 좋은 방법은 json_decode(json_encode($arr))를 사용하여 배열을 JSON 문자열로 변환한 다음 다시 배열로 변환하는 것입니다. unserialize(serialize($arr))를 사용하여 배열을 문자열로 직렬화한 다음 새 배열로 역직렬화합니다. RecursiveIteratorIterator를 사용하여 다차원 배열을 재귀적으로 순회합니다.

데이터 정렬에 PHP 배열 그룹화 기능 적용 데이터 정렬에 PHP 배열 그룹화 기능 적용 May 04, 2024 pm 01:03 PM

PHP의 array_group_by 함수는 키 또는 클로저 함수를 기반으로 배열의 요소를 그룹화하여 키가 그룹 이름이고 값이 그룹에 속한 요소의 배열인 연관 배열을 반환할 수 있습니다.

PHP 배열 다차원 정렬 연습: 간단한 시나리오부터 복잡한 시나리오까지 PHP 배열 다차원 정렬 연습: 간단한 시나리오부터 복잡한 시나리오까지 Apr 29, 2024 pm 09:12 PM

다차원 배열 정렬은 단일 열 정렬과 중첩 정렬로 나눌 수 있습니다. 단일 열 정렬은 array_multisort() 함수를 사용하여 열별로 정렬할 수 있습니다. 중첩 정렬에는 배열을 순회하고 정렬하는 재귀 함수가 필요합니다. 실제 사례로는 제품명별 정렬, 판매량 및 가격별 복합 정렬 등이 있습니다.

C++ 함수 예외 고급: 사용자 정의된 오류 처리 C++ 함수 예외 고급: 사용자 정의된 오류 처리 May 01, 2024 pm 06:39 PM

C++의 예외 처리는 특정 오류 메시지, 상황별 정보를 제공하고 오류 유형에 따라 사용자 지정 작업을 수행하는 사용자 지정 예외 클래스를 통해 향상될 수 있습니다. 특정 오류 정보를 제공하려면 std::Exception에서 상속된 예외 클래스를 정의하세요. 사용자 정의 예외를 발생시키려면 throw 키워드를 사용하십시오. try-catch 블록에서 Dynamic_cast를 사용하여 발견된 예외를 사용자 지정 예외 유형으로 변환합니다. 실제 경우 open_file 함수는 FileNotFoundException 예외를 발생시킵니다. 예외를 포착하고 처리하면 보다 구체적인 오류 메시지가 제공될 수 있습니다.

중복 요소를 찾는 데 있어 PHP 배열 그룹화 기능의 역할 중복 요소를 찾는 데 있어 PHP 배열 그룹화 기능의 역할 May 05, 2024 am 09:21 AM

PHP의 array_group() 함수를 사용하면 지정된 키로 배열을 그룹화하여 중복 요소를 찾을 수 있습니다. 이 함수는 다음 단계를 통해 작동합니다. key_callback을 사용하여 그룹화 키를 지정합니다. 선택적으로 value_callback을 사용하여 그룹화 값을 결정합니다. 그룹화된 요소 수를 계산하고 중복 항목을 식별합니다. 따라서 array_group() 함수는 중복된 요소를 찾고 처리하는 데 매우 유용합니다.

See all articles