我不知道PHP初學者是怎麼學習函 數的,可是我認爲學習他必定是有目的性,它是目的驅動的,以數組函數爲例!這麼多的數組函數咱們該怎麼學習?其實咱們只須要清楚,咱們須要對數組作哪些操 做,而後把這些操做歸類,心中就有了大概的印象,而後隨着你的實踐,這些函數你就很清楚了,在這裏提醒你們的是手冊要常備!廢話很少說,數組函數通常歸爲 如下幾類(看到英文別怕哦):
Outputting arrays
Creating arrays
Testing for an array
Locating array elements
Traversing arrays
Determining array size and element uniqueness
Sorting arrays
Merging, slicing, splicing, and dissecting arrays
Outputting arrays
print_r()
不熟悉這個的我就不想多說了!最基本的函數,固然要輸出數組也但是使用循環結構輸出,不過有這麼方便的輸出函數幹嘛不用呢!
Creating arrays
array()
這個函數我也不想說了,這其實只能算語言結構,你們在新建數組的時候都用到過,沒用過的我只能說,兄弟,我無語了!
list()
這個函數和上面提到的array()同樣,只是個語言結構,它經過一步操做給一組變量賦值!
具體示例請查看手冊!
range();
array range ( mixed low, mixed high[, number step] )
創建一個包含指定範圍單元的數組
示例:$arr =range(0, 6);
至關於$arr =array(0, 1, 2, 3, 4, 5, 6);
通常數據按從低到高排列,若是low> high,則從高到低排列;
Testing for an array
is_array();
測試變量是否array類型,是則返回true,不是則返回false,很基本,很實用的函數!
Adding and removing array elements
array_push()
int array_push ( array &target_array,mixed var [, mixed ...] )
將一個或多個單元從末尾添加至數組!返回新數組的單元總數!
示例:
web
$states =array(‘Ohio’, ‘New York’);
array_push($states, ‘California’,‘Texas’);
//output: array((‘Ohio’,‘New York’ , ‘California’,‘Texas’);
array_pop();
彈出並返回數組的最後一個單元,並將數組長度減一。使用後會重置數組指針!
示例:
數組
$states =array(‘Ohio’, ‘New York’);
$state = array_pop($states);
//output: New York
array_shift();
與array_pop相似,只不過它移出和返回的是數組的第一個值。數字鍵名將從新從零開始記數,文字鍵名則保持不變!
array_unshift();
與array_push相似,只不過是從數組頭部插入數據!數字鍵名將從新從零開始記數,文字鍵名則保持不變!
array_pad();
array array_pad ( array input, intpad_size, mixed pad_value )
用值將數組填充到指定長度!
pad_size爲正,則從右側開始填補,爲負,從左側開始填補,小與數組長度,則保持數組不變!示例見手冊!
Locating array elements
in_array();
檢查數組中是否存在某個值,基礎,不說了,具體見手冊!
array_keys();
array array_keys ( array input [,mixed search_value [, bool strict]] )
返回數組中的全部鍵名。若是選定search_value,則返回選定的鍵名!自PHP 5]起,能夠用strict參數來進行全等比較(===)。
array_key_exists();
bool array_key_exists ( mixed key,array search )
檢查給定的鍵名或索引是否存在於數組中,存在則返回true。一些更具體的應用記得查看手冊!
array_values();
array array_values ( array input )
與array_keys()相似!返回的是數組的全部鍵值!
array_search();
mixed array_search ( mixed needle,array haystack [, bool strict] )
在 haystack中搜索 needle參數並在找到的狀況下返回鍵名,不然返回FALSE。
若是needle是字符串,則比較區分大小寫!
若是strict是true,還得比較類型
若是needle在haystack中出現不止一次,則返回第一個匹配的鍵。要返回全部匹配值的鍵,應該用array_keys()加上可選參數search_value來代替!
Traversing arrays
key();
mixed key ( array &array )
返回數組中當前單元的鍵名!
reset();
重置數組的指針。
each();
返回數組中當前單元的鍵/值對,並將指針下移一位!
current();
返回當前被內部指針指向的數組單元的值,並不移動指針。若是超出了單元列表的末端,則返回false。
end();
將array的內部指針移動到最後一個單元並返回其值。
next();
返回數組內部指針指向的下一個單元的值,或當沒有更多單元時返回 FALSE。
prev();
返回數組內部指針指向的前一個單元的值,或當沒有更多單元時返回 FALSE。
array_walk();
bool array_walk ( array &array,callback funcname [, mixed userdata] )
具體描述請參考手冊!
示例:
array_reverse();
array array_reverse ( array array [,bool preserve_keys] )
接受數組array做爲輸入並返回一個單元爲相反順序的新數組,若是preserve_keys爲TRUE則保留原來的鍵名。
示例:
函數
$states =array(‘Delaware’, ‘Pennsylvania’,‘New Jersey’);
print_r(array_reverse($states));
//Array ([0]=>New Jersey [1]=>Pennsylvania[2]=>Delaware)
$states = array(‘Delaware’, ‘Pennsylvania’, ‘New Jersey’);
print_r(array_reverse($states, 1));
//Array ([2]=>New Jersey [1]=>Pennsylvania[0]=>Delaware)
array_flip();
array array_flip ( array trans )
交換數組中的鍵/值對,注意 trans 中的值須要可以做爲合法的鍵名,例如須要是 integer或者string。若是值的類型不對將發出一個警告,而且有問題的鍵/值對將不會反轉。
若是同一個值出現了屢次,則最後一個鍵名將做爲它的值,全部其它的都丟失了。
示例:
學習
$trans =array("a" => 1, "b" => 1, "c" => 2);
$trans = array_flip($trans);
print_r($trans);
//Array([1]=>b[2]=>c );
Determining array size and element uniqueness
count();
計算數組中的單元數目或對象中的屬性個數,很基本哦!
array_count_values();
返回一個數組,該數組用input數組中的值做爲鍵名,該值在input數組中出現的次數做爲值。
示例:測試
$array= array(1, "hello", 1, "world", "hello");
print_r(array_count_values ($array));
array_unique();
array array_unique ( array array )
接受 array做爲輸入並返回沒有重複值的新數組。
示例:spa
$input =array("a" => "green", "red", "b"=> "green", "blue", "red");
$result = array_unique($input);
print_r($result);
詳細用法請參見手冊!
Sorting arrays
sort();
本函數對數組進行排序。當本函數結束時數組單元將被從最低到最高從新安排。
注意: 本函數爲array中的單元賦予新的鍵名。這將刪除原有的鍵名而不只是從新排序。
natsort();
利用天然排序法對數組進行排序!
示例:指針
$array1 =$array2 = array("img12.png", "img10.png","img2.png", "img1.png");
sort($array1);
echo "Standard sorting\n";
print_r($array1);
natsort($array2);
echo "\nNatural order sorting\n";
print_r($array2);
natcasesort();
與natsort()一致,除了不區分大小寫!
rsort();
與sort()一致,這個是逆向排序。
asort();
與sort()一直,但保持鍵名不變。
array_multisort();
對多個數組或多維數組進行排序,具體參考手冊,有詳細說明!
arsort();
與rsort()相似,但保持鍵名不變。
ksort();
與sort()相似,對鍵名進行排序。
krsort();
與ksort()相似,可是逆向排序。
usort();
利用用戶自定義函數對數組進行排序!
Merging, slicing, splicing, and dissectingarrays
array_combine();
array array_combine ( array keys,array values )
建立一個數組,用一個數組的值做爲其鍵名,另外一個數組的值做爲其值
array_merge();
array array_merge ( array array1 [,array array2 [, array ...]] )
將一個或多個數組的單元合併起來,一個數組中的值附加在前一個數組的後面。返回做爲結果的數組。
若是輸入的數組中有相同的字符串鍵名,則該鍵名後面的值將覆蓋前一個值。
然而,若是數組包含數字鍵名,後面的值將不會覆蓋原來的值,而是附加到後面。
示例:code
$array1 =array("color" => "red", 2, 4);
$array2 = array("a", "b", "color" =>"green", "shape" => "trapezoid", 4);
$result = array_merge($array1, $array2);
print_r($result);
若是隻給了一個數組而且該數組是數字索引的,則鍵名會以連續方式從新索引。orm
$array1 = array();
$array2 = array(1 => "data");
$result = array_merge($array1, $array2);
若是你想徹底保留原有數組並只想新的數組附加到後面,用+運算符:對象
$array1 = array();
$array2 = array(1 => "data");
$result = $array1 + $array2;
array_merge_recursive();
array array_merge_recursive ( arrayarray1 [, array ...] )
將一個或多個數組的單元合併起來,一個數組中的值附加在前一個數組的後面。返回做爲結果的數組。
若是輸入的數組中有相同的字符串鍵名,則這些值會被合併到一個數組中去,這將遞歸下去,所以若是一個值自己是一個數組,本函數將按照相應的條目把它合併爲另外一個數組。然而,若是數組具備相同的數組鍵名,後一個值將不會覆蓋原來的值,而是附加到後面。
$ar1 = array("color" =>array("favorite" => "red"), 5);
$ar2 = array(10, "color" => array("favorite" =>"green", "blue"));
$result = array_merge_recursive($ar1, $ar2);
print_r($result);
更詳細的使用請參加手冊!
array_slice();
array array_slice ( array array, intoffset [, int length [, bool preserve_keys]] )
從數組中取出一段。
若是offset非負,則序列將從array中的此偏移量開始。若是offset爲負,則序列將從array中距離末端這麼遠的地方開始。
若是給出了length而且爲正,則序列中將具備這麼多的單元。若是給出了length而且爲負,則序列將終止在距離數組末端這麼遠的地方。若是省略,則序列將從offset開始一直到array的末端。
示例:
$input = array("a","b", "c", "d", "e");
$output = array_slice($input, 2); // returns"c", "d", and "e"
$output = array_slice($input, -2, 1); // returns "d"
$output = array_slice($input, , 3); // returns "a","b", and "c"
// note the differences in the array keys
print_r(array_slice($input, 2, -1));
print_r(array_slice($input, 2, -1, true));
array_splice();
array array_splice ( array&input, int offset [, int length [, array replacement]] )
把input數組中由offset和length指定的單元去掉,若是提供了replacement參數,則用replacement數組中的單元取代。返回一個包含有被移除單元的數組。注意input中的數字鍵名不被保留。
若是offset非負,則序列將從array中的此偏移量開始。若是offset爲負,則序列將從array中距離末端這麼遠的地方開始。
若是給出了length而且爲正,則序列中將具備這麼多的單元。若是給出了length而且爲負,則序列將終止在距離數組末端這麼遠的地方。若是省略,則序列將從offset開始一直到array的末端。
具體應用參見手冊!
array_intersect();
array array_intersect ( arrayarray1, array array2 [, array ...] )
返回一個數組,該數組包含了全部在 array1 中也同時出如今全部其它參數數組中的值。注意鍵名保留不變。
示例:
$array1 =array("a" => "green", "red","blue");
$array2 = array("b" => "green", "yellow","red");
$result = array_intersect($array1, $array2);
array_intersect_assoc();
注意和array_intersect()不一樣的是鍵名也用於比較。
array_diff();
與array_intersect()相似,只不過它是計算數組的差集
array_diff_assoc();
與array_intersect_assoc()相似,只不過它是計算數組的差集
Other useful array functions
array_rand();
mixed array_rand ( array input [,int num_req] )
從數組中隨機取出一個或多個單元。
shuffle();
bool shuffle ( array &array )
本函數打亂(隨機排列單元的順序)一個數組。
本函數爲 array 中的單元賦予新的鍵名。這將刪除原有的鍵名而不只是從新排序。
array_sum();
將數組中的全部值的和以整數或浮點數的結果返回。
array_chunk();
array array_chunk ( array input, intsize [, bool preserve_keys] )
將一個數組分割成多個數組,其中每一個數組的單元數目由 size 決定。最後一個數組的單元數目可能會少幾個。獲得的數組是一個多維數組中的單元,其索引從零開始。
將可選參數preserve_keys 設爲 TRUE,可使 PHP 保留輸入數組中原來的鍵名。若是你指定了 FALSE,那每一個結果數組將用從零開始的新數字索引。默認值是 FALSE。