1. 程式人生 > 程式設計 >php回撥函式處理陣列操作示例

php回撥函式處理陣列操作示例

本文例項講述了php回撥函式處理陣列操作。分享給大家供大家參考,具體如下:

array_reduce— 用回撥函式迭代地將陣列簡化為單一的值

mixed array_reduce ( array $array,callable $callback [,mixed $initial = NULL ] )

  • callback【mixed callback ( mixed $carry,mixed $item ) carry--攜帶上次迭代裡的值; 如果本次迭代是第一次,那麼這個值是 initial。item --攜帶了本次迭代的值。】
  • initial【如果指定了可選引數 initial,該引數將在處理開始前使用,或者當處理結束,陣列為空時的最後一個結果。】

例:

$res = [
 '0' => [
 'a' => 'you','b' => 'me'
 ],'1' => [
 'c' => 'li','d' => 'op'
 ]
];
$res = array_reduce($res,function($result,$value) {
 return array_merge($result,array_values($value));
},array());
var_dump($res);

輸出:

array(4) {
[0]=>
string(3) "you"
[1]=>
string(2) "me"

[2]=>
string(2) "li"
[3]=>
string(2) "op"
}

array_filter — 用回撥函式過濾陣列中的單元

array array_filter ( array $array [,int $flag = 0 ]] ) 返回過濾後的陣列。

  • array--要迴圈的陣列
  • callback--使用的回撥函式,如果沒有提供 callback 函式, 將刪除 array 中所有等值為 FALSE 的條目。
  • flag--決定callback接收的引數形式:
    • ARRAY_FILTER_USE_KEY - callback接受鍵名作為的唯一引數
    • ARRAY_FILTER_USE_BOTH - callback同時接受鍵名和鍵值

例:

function odd($var)
{
  // returns whether the input integer is odd
  return($var & 1);
}
 
function even($var)
{
  // returns whether the input integer is even
  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"));//1,3,5
echo "Even:\n";
print_r(array_filter($array2,"even"));//2,4,6

array_map — 為陣列的每個元素應用回撥函式

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

引數

  • callback--回撥函式,應用到每個數組裡的每個元素。
  • array1--陣列,遍歷執行 callback 函式。

...

陣列列表,每個都遍歷執行 callback 函式。

返回值----返回陣列,包含 callback 函式處理之後 array1 的所有元素。

例:

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
)

更多關於PHP相關內容感興趣的讀者可檢視本站專題:《PHP陣列(Array)操作技巧大全》、《PHP常用遍歷演算法與技巧總結》、《php字串(string)用法總結》、《php常用函式與技巧總結》、《PHP錯誤與異常處理方法總結》、《PHP基本語法入門教程》、《php面向物件程式設計入門教程》及《PHP數學運算技巧總結》

希望本文所述對大家PHP程式設計有所幫助。