PHP5中数组函数总结
2019獨角獸企業重金招聘Python工程師標準>>>
我不知道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 ...] )
將一個或多個單元從末尾添加至數組!返回新數組的單元總數!
示例:
PHP代碼:
$states =array(‘Ohio’, ‘New York’);array_push($states, ‘California’,‘Texas’);
//output: array((‘Ohio’,‘New York’ , ‘California’,‘Texas’);
array_pop();
彈出并返回數組的最后一個單元,并將數組長度減一。使用后會重置數組指針!
示例:
PHP代碼:
$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則保留原來的鍵名。
示例:
PHP代碼:
$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。如果值的類型不對將發出一個警告,并且有問題的鍵/值對將不會反轉。
如果同一個值出現了多次,則最后一個鍵名將作為它的值,所有其它的都丟失了。
示例:
PHP代碼:
$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數組中出現的次數作為值。
示例:
PHP代碼:
$array= array(1, "hello", 1, "world", "hello");print_r(array_count_values ($array));
array_unique();
array array_unique ( array array )
接受 array作為輸入并返回沒有重復值的新數組。
示例:
PHP代碼:
$input =array("a" => "green", "red", "b"=> "green", "blue", "red");$result = array_unique($input);
print_r($result);
詳細用法請參見手冊!
Sorting arrays
sort();
本函數對數組進行排序。當本函數結束時數組單元將被從最低到最高重新安排。
注意: 本函數為array中的單元賦予新的鍵名。這將刪除原有的鍵名而不僅是重新排序。
natsort();
利用自然排序法對數組進行排序!
示例:
PHP代碼:
$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 ...]] )
將一個或多個數組的單元合并起來,一個數組中的值附加在前一個數組的后面。返回作為結果的數組。
如果輸入的數組中有相同的字符串鍵名,則該鍵名后面的值將覆蓋前一個值。
然而,如果數組包含數字鍵名,后面的值將不會覆蓋原來的值,而是附加到后面。
示例:
PHP代碼:
$array1 =array("color" => "red", 2, 4);$array2 = array("a", "b", "color" =>"green", "shape" => "trapezoid", 4);
$result = array_merge($array1, $array2);
print_r($result);
如果只給了一個數組并且該數組是數字索引的,則鍵名會以連續方式重新索引。
復制PHP內容到剪貼板PHP代碼:
$array1 = array();$array2 = array(1 => "data");
$result = array_merge($array1, $array2);
如果你想完全保留原有數組并只想新的數組附加到后面,用+運算符:
復制PHP內容到剪貼板PHP代碼:
$array1 = array();$array2 = array(1 => "data");
$result = $array1 + $array2;
array_merge_recursive();
array array_merge_recursive ( arrayarray1 [, array ...] )
將一個或多個數組的單元合并起來,一個數組中的值附加在前一個數組的后面。返回作為結果的數組。
如果輸入的數組中有相同的字符串鍵名,則這些值會被合并到一個數組中去,這將遞歸下去,因此如果一個值本身是一個數組,本函數將按照相應的條目把它合并為另一個數組。然而,如果數組具有相同的數組鍵名,后一個值將不會覆蓋原來的值,而是附加到后面。
PHP代碼:
$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的末端。
示例:
PHP代碼:
$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 中也同時出現在所有其它參數數組中的值。注意鍵名保留不變。
示例:
PHP代碼:
$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。
轉載于:https://my.oschina.net/adamboy/blog/30313
總結
以上是生活随笔為你收集整理的PHP5中数组函数总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 给黑白照片上色
- 下一篇: Juniper大中国区于肇烈