首頁 >後端開發 >php教程 >對php中幾個數組函數的理解

對php中幾個數組函數的理解

WBOY
WBOY原創
2016-07-25 09:07:24933瀏覽
  1. // 求和
  2. function rsum($v, $w)
  3. {
  4. return $v;
  5. }
  6. // 求沉積
  7. function rmul($v, $w)
  8. {
  9. return $v;
  10. }
  11. $a = array( 1, 2, 3, 4, 5);
  12. $x = array();
  13. $b = array_reduce($a, "rsum");
  14. echo 'result:';
  15. print_r ($b);
  16. echo '
    ';
  17. // 以上輸出15,相當於array_sum
  18. $c = array_reduce($a, "rsum", 1 );
  19. echo 'result:';
  20. print_r($c);
  21. echo '
    ';
  22. // 輸出16,相當於array_sum 再加上1
  23. $d = array_reduce($a, "rmul", 10);
  24. echo 'result:';
  25. print_r($d);
  26. echo '
    '; 🎜> // 1200,相當於10 * 1 * 2 * 3 * 4 * 5
  27. $d = array_reduce($a, "rmul");
  28. echo 'result:';
  29. print_r($d);
  30. echo '
    ';
  31. // 0,相當於0 * 1 * 2 * 3 * 4 * 5
  32. $d = array_reduce($x , "rsum", 1);
  33. echo 'result:';
  34. print_r($d);
  35. // 輸出1 由於$x為空,所以直接傳回initial
複製程式碼

二、array_chunk 函數

(PHP 4 >= 4.2.0, PHP 5)

array_chunk — 將一個陣列分割成多個 說明 array array_chunk ( array$input , int$size [, bool$preserve_keys ] )

array_chunk() 將一個陣列分割成多個數組,其中每個數組的單元數由size 決定(即每個數組的元素為size個)。最後一個數組的單元數可能會少幾個。得到的數組是一個多維數組中的單元,其索引從零開始。

將選用參數 preserve_keys 設為 TRUE,可以讓 PHP 保留輸入陣列中原來的鍵名。如果你指定了 FALSE,那麼每個結果陣列將會用從零開始的新數字索引。預設值是FALSE。 這個函數比較好理解,不多說。

三、array_flip 函數

(PHP 4, PHP 5)

array_flip — 交換數組中的鍵和值 說明 array array_flip ( array$trans )

array_flip() 傳回一個反轉後的array,例如 trans 中的鍵名變成了值,而trans 中的值成了鍵名。

注意 trans 中的值需要能夠作為合法的鍵名,例如需要是integer 或 string。如果值的類型不對將發出一個警告,並且有問題的鍵/值對將不會反轉。

如果同一個值出現了多次,則最後一個鍵名將作為它的值,所有其它的都丟失了。

array_flip() 如果失敗回傳FALSE。

注意:連續呼叫兩次可去重的哦!

四、array_filter 函數

(PHP 4 >= 4.0.6, PHP 5)

array_filter — 用回呼函數過濾數組中的單元 說明 array array_filter ( array$input [, callback$callback ] )

array_filter() 依序將input 陣列中的每個值傳遞到 callback 函數。如果callback 函數傳回 TRUE,則input 陣列的目前值會被包含在傳回的結果陣列中。數組的鍵名保留不變。

array_filter() 例子

  1. function odd($var)
  2. {
  3. return($var % 2 == 1);
  4. {
  5. return($var % 2 == 1);
  6. }
  7. function even($var)
  8. {
  9. return($var % 2 == 0);
  10. }
  11. $array1 = array("a" =>1, "b"=>2, "c"=>3, "d"=>4, "e"=>5);
  12. $array2 = array(6, 7, 8, 9, 10 , 11, 12);
  13. echo "Odd :n";
  14. print_r(array_filter($array1, "odd"));
  15. echo "Even:n";
  16. print_r( array_filter($array2, "even"));
?>
複製程式碼

輸出: Odd : Array ( [a] => 1 [c] => 3 [e] => 5 ) Even: Array ( [0] => 6 [2] => 8 [4] => 10 [6] => 12 )

使用者不應在回呼函數中修改陣列本身。例如增加/刪除單元或對 array_filter() 正在作用的陣列進行 unset。如果陣列改變了,此函數的行為沒有定義。

如果沒有提供 callback 函數,array_filter() 將刪除input 中所有等值為 FALSE 的條目。更多資訊請見轉換為布林值。

  1. $entry = array(
  2. 0 => 'foo',
  3. 1 => false,
  4. 2 => -1,
  5. 3 => null,
  6. 4 => ''
  7. );
  8. print_r(array_filter($entry));
  9. ?>
複製程式碼

上例輸出: Array ( [0] => foo [2] => -1 )



陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn