php中的數組函數學習記錄1

一、返回字符串鍵名全爲小寫或大寫的數組。array_change_key_case

用法:array_change_key_case($input (array),CASE_UPPER|CASE_LOWER),其中CASE_LOWER是返回小寫(默認),CASE_UPPER返回大寫javascript

例子:
php

$input_array = array("FirSt" => 1, "SecOnd" => 4);
var_dump(array_change_key_case($input_array, CASE_UPPER));
var_dump(array_change_key_case($input_array));

結果:array(2) {  ["FIRST"]=>  int(1)  ["SECOND"]=>  int(4) }
java

         array(2) {  ["first"]=>  int(1)  ["second"]=>  int(4) }python

二、將一個數組分爲多個數組。array_chunkmysql

用法:array_chunk($input(array),$size(int),TRUE|FALSE),其中$size是每個新的數組的個數,TRUE會保留原來的鍵名,FALSE會從新從數字索引開始(默認)。redis

$input_array = array('a'=>'python',"b"=>"java","c"=>"php","d"=>"mysql","e"=>"javascript","f"=>"redis","g"=>"R","h"=>"mongodb");
var_dump(array_chunk($input_array, 2));
var_dump(array_chunk($input_array, 2, true));

結果:array(4) {  [0]=>  array(2) {    [0]=>    string(6) "python"    [1]=>    string(4) "java"  }  [1]=>  array(2) {    [0]=>    string(3) "php"    [1]=>    string(5) "mysql"  }  [2]=>  array(2) {    [0]=>    string(10) "javascript"    [1]=>    string(5) "redis"  }  [3]=>  array(2) {    [0]=>    string(1) "R"    [1]=>    string(7) "mongodb"  } }sql

array(4) {  [0]=>  array(2) {    ["a"]=>    string(6) "python"    ["b"]=>    string(4) "java"  }  [1]=>  array(2) {    ["c"]=>    string(3) "php"    ["d"]=>    string(5) "mysql"  }  [2]=>  array(2) {    ["e"]=>    string(10) "javascript"    ["f"]=>    string(5) "redis"  }  [3]=>  array(2) {    ["g"]=>    string(1) "R"    ["h"]=>    string(7) "mongodb"  } }mongodb

三、建立一個數組,用一個數組的值做爲其鍵名,另外一個數組的值做爲其值    array_combine數組

用法: array_combine($input1(array),$input2(array)).其中$input1中數組爲鍵名,$input2中數組爲鍵值,若是長度不同則返回FALSE;函數

$a=array("a","b","c");
$b=array("php","python","mysql");
$c = array_combine($a, $b);
var_dump($c);
$e=array("a","b");
$f=array_combine($e,$b);
var_dump($f);

結果:

array(3) {  ["a"]=>  string(3) "php"  ["b"]=>  string(6) "python"  ["c"]=>  string(5) "mysql" }
Warning:  array_combine() [function.array-combine]: Both parameters should have an equal number of elements in D:\WWW\array\arraytest.php on line 8
bool(false)

四、統計數組中全部的值出現的次數 array_count_values

用法:array_count_values ( $input(array) )

$input_array = array('a'=>'python',"b"=>"java","c"=>"php","d"=>"mysql","e"=>"javascript","f"=>"redis","g"=>"R","h"=>"mongodb");
$array = array(1, "hello", 1, "world", "hello");
var_dump(array_count_values ($array));
var_dump(array_count_values ($input_array));

結果:

array(3) {  [1]=>  int(2)  ["hello"]=>  int(2)  ["world"]=>  int(1) }

array(8) {  ["python"]=>  int(1)  ["java"]=>  int(1)  ["php"]=>  int(1)  ["mysql"]=>  int(1)  ["javascript"]=>  int(1)  ["redis"]=>  int(1)  ["R"]=>  int(1)  ["mongodb"]=>  int(1) }

五、計算數組的差集-array_diff

用法:array_diff($input1(array),$input2(array),$input(array)....);返回在$input中但不在其餘數組中的值

$input_array = array('python',"b"=>"java","c"=>"php","d"=>"mysql","e"=>"javascript","f"=>"redis","R","h"=>"mongodb");
$array = array("javascript","f"=>"redis","g"=>"R","h"=>"mongodb");
var_dump(array_diff($input_array,$array));

結果:array(4) {  [0]=>  string(6) "python"  ["b"]=>  string(4) "java"  ["c"]=>  string(3) "php"  ["d"]=>  string(5) "mysql" }

六、用回調函數對鍵名比較計算數組的差集-array_diff_ukey

用法和array_diff同樣,只是array_diff是根據鍵值,array_diff_ukey只是根據鍵名,不過要經過一個回調函數進行比較,雖說是用戶能夠自定義,不過看網上其餘的說法,仍是手冊,貌似那個回調函數都一個樣子,有明白的能夠給我指點一下,直接上例子,先能用。

function key_compare_func($key1, $key2){
   if ($key1 == $key2)
       return 0;
   else if ($key1 > $key2)
       return 1;
   else
       return -1;
}
$array1 = array('blue'  => 1, 'red'  => 2, 'green'  => 3, 'purple' => 4);
$array2 = array('green' => 5, 'blue' => 6, 'yellow' => 7, 'cyan'   => 8);
var_dump(array_diff_ukey($array1, $array2, 'key_compare_func'));

結果:array(2) {  ["red"]=>  int(2)  ["purple"]=>  int(4) }(都是求差集,所謂的回調函數也就這樣。。。)

七、用用戶提供的回調函數作索引檢查來計算數組的差集-----array_diff_uassoc

用法:上面用法同樣,只是在鍵值的基礎上,鍵名也參與了比較

function key_compare_func($a, $b)
{
   if ($a === $b) {
       return 0;
   }
   return ($a > $b)? 1:-1;
}
$array1 = array("a" => "green", "b" => "brown", "c" => "blue", "red");
$array2 = array("a" => "green", "yellow", "red");
$array3=array("a" => "green", "red", "b" => "brown", "c" => "blue");
$array4=array("a" => "green", "red", "yellow");
var_dump(array_diff_uassoc($array1, $array2, "key_compare_func"));
var_dump(array_diff_uassoc($array3, $array4, "key_compare_func"));

結果:array(3) {  ["b"]=>  string(5) "brown"  ["c"]=>  string(4) "blue"  [0]=>  string(3) "red" }

           array(2) {  ["b"]=>  string(5) "brown"  ["c"]=>  string(4) "blue" }

八、使用鍵名比較計算數組的差集,array_diff_key

用法和array_diff同樣,這個是經過鍵名來求差集,更重要的是沒有什麼回調函數

$array1 = array('blue'  => 1, 'red'  => 2, 'green'  => 3, 'purple' => 4);
$array2 = array('green' => 5, 'blue' => 6, 'yellow' => 7, 'cyan'   => 8);
var_dump(array_diff_key($array1, $array2));

結果:array(2) {  ["red"]=>  int(2)  ["purple"]=>  int(4) }

九、帶索引檢查計算數組的差集 array_diff_assoc

用法和array_diff,array_diff_key同樣,在比較時候加入了索引

$array1 = array ("a" => "green", "b" => "brown", "c" => "blue", "red");
$array2 = array ("a" => "green", "red", "yellow");
$array3 = array ("a" => "green", "yellow", "red");
var_dump(array_diff_assoc($array1, $array2));
var_dump(array_diff_assoc($array1, $array3));

結果:array(2) {  ["b"]=>  string(5) "brown"  ["c"]=>  string(4) "blue" }

array(3) {  ["b"]=>  string(5) "brown"  ["c"]=>  string(4) "blue"  [0]=>  string(3) "red" }

十、用給定的值填充數組--array_fill

用法:array_fill($start_index(int),$num(int),$value)用 value 參數的值將一個數組填充 num 個條目,鍵名start_index 參數指定的開始。注意 num 必須是一個大於零的數值

var_dump(array_fill(5, 6, 'banana'));

結果:array(4) {  [5]=>  string(6) "banana"  [6]=>  string(6) "banana"  [7]=>  string(6) "banana"  [8]=>  string(6) "banana" }

十一、使用指定的鍵和值填充數組--array_fill_keys

array_fill_keys($input(array),$value(string))使用 value 參數的值做爲值,使用 keys 數組的值做爲鍵來填充一個數組。

$keys = array('foo', 5, 10, 'bar'=>'1');
var_dump(array_fill_keys($keys, 'banana'));

結果:array(4) {  ["foo"]=>  string(6) "banana"  [5]=>  string(6) "banana"  [10]=>  string(6) "banana"  [1]=>  string(6) "banana" }

十二、用回調函數過濾數組中的單元 array_filter

array_filter($input(array),$callback(function)),$input中的值會傳給回調函數,經過回調函數進行判斷,再返回給結果數組中。

function odd($var){
   return($var % 2 == 1);
}
function even($var){
   return($var % 2 == 0);
}
$array1 = array("a"=>1, "b"=>2, "c"=>3, "d"=>4, "e"=>5);
$array2 = array(6, 7, 8, 9, 10, 11, 12);
var_dump(array_filter($array1, "odd"));
var_dump(array_filter($array2, "even"));

結果:array(3) {  ["a"]=>  int(1)  ["c"]=>  int(3)  ["e"]=>  int(5) }

         array(4) {  [0]=>  int(6)  [2]=>  int(8)  [4]=>  int(10)  [6]=>  int(12) }

1三、交換數組中的鍵和值-array_flip($input(array))貌似這個主要用的是關聯數組

用法:輸入一個數組,交換鍵名很鍵值的位置。鍵名須要是合法的如:string或者int型,

若是值的類型不對將發出一個警告,而且有問題的鍵/值對將不會反轉。若是同一個值出現了屢次,則最後一個鍵名將做爲它的值,全部其它的都丟失了。array_flip() 若是失敗返回 FALSE。

$array = array("javascript","f"=>"redis","g"=>"R","h"=>"mongodb");
var_dump(array_flip($array));

結果:array(4) {  ["javascript"]=>  int(0)  ["redis"]=>  string(1) "f"  ["R"]=>  string(1) "g"  ["mongodb"]=>  string(1) "h" }

1四、計算數組的交集-array_intersect

用法:array_intersect(array1,array2...),就是計算多個數組的交集,再以數組返回回來

$array1 = array("a" => "green", "red", "blue");
$array2 = array("b" => "green", "yellow", "red");
var_dump(array_intersect($array1, $array2));

結果:array(2) {  ["a"]=>  string(5) "green"  [0]=>  string(3) "red" }

1五、用回調函數比較鍵名來計算數組的交集-array_intersect_ukey

array_intersect_ukey(array1,array2,....,function)經過回調函數來計算數組的交集

此比較是經過用戶提供的回調函數來進行的。若是認爲第一個參數小於,等於,或大於第二個參數時必須分別返回一個小於零,等於零,或大於零的整數。

function key_compare_func($key1, $key2){
   if ($key1 == $key2)
       return 0;
   else if ($key1 > $key2)
       return 1;
   else
       return -1;
}
$array1 = array('blue'  => 1, 'red'  => 2, 'green'  => 3, 'purple' => 4);
$array2 = array('green' => 5, 'blue' => 6, 'yellow' => 7, 'cyan'   => 8);
var_dump(array_intersect_ukey($array1, $array2, 'key_compare_func'));

結果:array(2) {  ["blue"]=>  int(1)  ["green"]=>  int(3) }

1六、帶索引檢查計算數組的交集,用回調函數比較索引-array_intersect_uassoc

array_intersect_uassoc(array1,array2,....,function)返回的數組中包含了全部在 array1 中也同時出如今全部其它參數數組中的值

$array1 = array("a" => "green", "b" => "brown", "c" => "blue", "red");
$array2 = array("a" => "GREEN", "B" => "brown", "yellow", "red");
print_r(array_intersect_uassoc($array1, $array2, "strcasecmp"));

結果:Array (    [b] => brown )

1七、使用鍵名比較計算數組的交集--array_intersect_key

用法:array_intersect_key(array1,array2,....)返回的數組包含了全部出如今array1 中並同時出如今全部其它參數數組中的鍵名的值。

$array1 = array('blue'  => 1, 'red'  => 2, 'green'  => 3, 'purple' => 4);
$array2 = array('green' => 5, 'blue' => 6, 'yellow' => 7, 'cyan'   => 8);
var_dump(array_intersect_key($array1, $array2));

結果:array(2) {  ["blue"]=>  int(1)  ["green"]=>  int(3) }

1八、帶索引檢查計算數組的交集-array_intersect_assoc

用法:和array_diff_assoc同樣,只不過不一樣的是一個求交集,一個求並集

$array1 = array("a" => "green", "b" => "brown", "c" => "blue", "red");
$array2 = array("a" => "green", "yellow", "red");
$array3 = array("a" => "green", "red", "b" => "brown", "c" => "blue");
$array4 = array("a" => "green", "red", "yellow");
var_dump(array_intersect_assoc($array1, $array2));
var_dump(array_intersect_assoc($array3, $array4));

結果:

array(1) {  ["a"]=>  string(5) "green" } array(2) {  ["a"]=>  string(5) "green"  [0]=>  string(3) "red" }

相關文章
相關標籤/搜索