PHP常見數組方法和函數
current();當前遊標指向的數組單元值
next();下一個數組單元值
end()最後一個
reset()復位
prev()把數組指針往前一位
寫法:$arr=array(‘a‘,‘b‘,‘c‘,‘d‘);
next($arr);
echo current($arr);
isset當值是null時false
isset判斷一個變量是否存在
array_key_exists(‘角標,數組名‘) 函數檢查某個數組中是否存在指定的鍵名
in_array(‘值‘,數組名);判斷值是否存在
1、array_change_key_case():把數組中所有鍵更改為小寫或大寫。
array_change_key_case(array,case);
參數 | 描述 |
---|---|
array | 必需。規定要使用的數組。 |
case |
可選。可能的值:
|
2、array_chunk():把一個數組分割為新的數組塊。
array_chunk(array,size,preserve_key);
參數 | 描述 |
---|---|
array | 必需。規定要使用的數組。 |
size | 必需。整數值,規定每個新數組包含多少個元素。 |
preserve_key |
可選。可能的值:
|
3、array_column(): 返回輸入數組中某個單一列的值。
array_column(array,column_key,index_key);
參數 | 描述 |
---|---|
array | 必需。規定要使用的多維數組(記錄集)。 |
column_key |
必需。需要返回值的列。 可以是索引數組的列的整數索引,或者是關聯數組的列的字符串鍵值。 該參數也可以是 NULL,此時將返回整個數組(配合 index_key 參數來重置數組鍵的時候,非常有用)。 |
index_key | 可選。用作返回數組的索引/鍵的列。 |
4、array_combine():通過合並兩個數組(鍵名、鍵值合並成一個)來創建一個新數組。 (註釋:
array_combine(keys,values);
參數 | 描述 |
---|---|
keys | 必需。鍵名數組。 |
values | 必需。鍵值數組。 |
5、array_count_values(): 統計數組中所有值出現的次數。
array_count_values(array)
參數 | 描述 |
---|---|
array | 必需。規定需要對值進行計數的數組。 |
返回值: | 返回關聯數組,其元素的鍵名是原數組的值,鍵值是該值在原數組中出現的次數。 |
6、array_diff():比較數組,返回差集(只比較鍵值)。
array_diff(array1,array2,array3...);
參數 | 描述 |
---|---|
array1 | 必需。與其他數組進行比較的第一個數組。 |
array2 | 必需。與第一個數組進行比較的數組。 |
array3,... | 可選。與第一個數組進行比較的其他數組。 |
返回值: | 返回差集數組,該數組包括了所有在被比較的數組(array1)中,但是不在任何其他參數數組(array2或 array3 等等)中的鍵值。 |
array_diff_assoc():比較數組,返回差集(比較鍵名和鍵值)。
array_diff_key():比較數組,返回差集(只比較鍵名)。
array_diff_uassoc():比較數組,返回差集(比較鍵名和鍵值,使用用戶自定義的鍵名比較函數)
array_diff_uassoc(array1,array2,array3...,myfunction);
參數 | 描述 |
---|---|
array1 | 必需。與其他數組進行比較的第一個數組。 |
array2 | 必需。與第一個數組進行比較的數組。 |
array3,... | 可選。與第一個數組進行比較的其他數組。 |
myfunction | 必需。定義可調用比較函數的字符串。如果第一個參數小於、等於或大於第二個參數,則該比較函數必須返回小於、等於或大於 0 的整數。 |
例:
<?php
function myfunction($a,$b)
{
if ($a===$b)
{
return 0;
}
return ($a>$b)?1:-1;
}
$a1=array("a"=>"red","b"=>"green","c"=>"blue");
$a2=array("d"=>"red","b"=>"green","e"=>"blue");
$result=array_diff_uassoc($a1,$a2,"myfunction")
;
print_r($result);
?>
7、array_filter():用回調函數過濾數組中的元素。
array_filter(array,callbackfunction);
參數 | 描述 |
---|---|
array | 必需。規定要過濾的數組。 |
callbackfunction | 必需。規定要使用的回調函數。 |
返回值: | 返回過濾的數組。 |
<?php
function test_odd($var)
{
return($var & 1);
}
$a1=array("a","b",2,3,4);
print_r(array_filter($a1,"test_odd")
);
?>
8、array_flip():交換數組中的鍵和值。
array_flip(array);
返回值: | 如果反轉成功,則返回反轉後的數組。如果失敗,則返回 NULL。 |
9、array_intersect():比較數組,返回交集(只比較鍵值)。
array_intersect(array1,array2,array3...);
參數 | 描述 |
---|---|
array1 | 必需。與其他數組進行比較的第一個數組。 |
array2 | 必需。與第一個數組進行比較的數組。 |
array3,... | 可選。與第一個數組進行比較的其他數組。 |
返回值: | 返回交集數組,該數組包括了所有在被比較的數組(array1)中,同時也在任何其他參數數組(array2 或 array3 等等)中的鍵值。 |
array_intersect_assoc():比較數組,返回交集(比較鍵名和鍵值)。
array_intersect_key():比較數組,返回交集(只比較鍵名)。
array_intersect_uassoc():比較數組,返回交集(比較鍵名和鍵值,使用用戶自定義的鍵名比較函數)。
array_intersect_uassoc(array1,array2,array3...,myfunction)
參數 | 描述 |
---|---|
array1 | 必需。與其他數組進行比較的第一個數組。 |
array2 | 必需。與第一個數組進行比較的數組。 |
array3,... | 可選。與第一個數組進行比較的其他數組。 |
myfunction | 必需。定義可調用比較函數的字符串。如果第一個參數小於、等於或大於第二個參數,則該比較函數必須返回小於、等於或大於 0 的整數。 |
返回值: | 返回交集數組,該數組包括了所有在被比較的數組(array1)中,同時也在任何其他參數數組(array2或 array3 等等)中的鍵名和鍵值。 |
註意,與 array_intersect() 不同的是除了比較鍵值,還要比較鍵名。
此比較是通過用戶提供的回調函數來進行的。該函數帶有兩個參數,即兩個要進行對比的鍵名。如果第一個參數小於第二個參數,則函數要返回一個負數,如果兩個參數相等,則要返回 0,如果第一個參數大於第二個參數,則返回一個正數。
10、array_key_exists():檢查指定的鍵名是否存在於數組中。
array_key_exists(key,array)
參數 | 描述 |
---|---|
key | 必需。規定鍵名。 |
array | 必需。規定數組。 |
返回值: | 如果鍵名存在則返回 TRUE,如果鍵名不存在則返回 FALSE。 |
11、array_keys():返回數組中所有的鍵名。
array_keys(array,value,strict)
參數 | 描述 |
---|---|
array | 必需。規定數組。 |
value | 可選。您可以指定鍵值,然後只有該鍵值對應的鍵名會被返回。 |
strict |
可選。與 value 參數一起使用。可能的值:
|
返回值: | 返回包含數組中所有鍵名的一個新數組。 |
12、array_map():把數組中的每個值發送到用戶自定義函數,返回新的值。
array_map(myfunction,array1,array2,array3...)
參數 | 描述 |
---|---|
myfunction | 必需。用戶自定義函數的名稱,或者是 null。 |
array1 | 必需。規定數組。 |
array2 | 可選。規定數組。 |
array3 | 可選。規定數組。 |
返回值: | 返回包含 array1 的值的數組,在向每個值應用自定義函數後。 |
例:一個數組
<?php
function myfunction($v)
{
if ($v==="Dog")
{
return "Fido";
}
return $v;
}
$a=array("Horse","Dog","Cat");
print_r(array_map("myfunction",$a)
);
?>
例:兩個數組
<?php
function myfunction($v1,$v2)
{
if ($v1===$v2)
{
return "same";
}
return "different";
}
$a1=array("Horse","Dog","Cat");
$a2=array("Cow","Dog","Rat");
print_r(array_map("myfunction",$a1,$a2)
);
?>
13、array_merge():把一個或多個數組合並為一個數組。(非鍵名、鍵值合並)
array_merge(array1,array2,array3...)
參數 | 描述 |
---|---|
array1 | 必需。規定數組。 |
array2 | 可選。規定數組。 |
array3 | 可選。規定數組。 |
返回值: | 返回合並的數組。 |
14、array_multisort():對多個數組或多維數組進行排序。
array_multisort(array1,sorting order,sorting type,array2,array3...)
參數 | 描述 |
---|---|
array1 | 必需。規定數組。 |
sorting order |
可選。規定排列順序。可能的值:
|
sorting type |
可選。規定排序類型。可能的值:
|
array2 | 可選。規定數組。 |
array3 | 可選。規定數組。 |
返回值: | 如果成功則返回 TRUE,如果失敗則返回 FALSE。 |
15、array_pop():刪除數組的最後一個元素(出棧)。
返回值: | 返回數組的最後一個值。如果數組是空的,或者非數組,將返回 NULL。 |
16、array_product():計算數組中所有值的乘積。
17、array_push():將一個或多個元素插入數組的末尾(入棧)。
返回值: | 返回新數組的元素個數。 |
18、array_rand():返回數組中一個或多個隨機的鍵。
array_rand(array,number)
參數 | 描述 |
---|---|
array | 必需。規定數組。 |
number | 可選。規定返回多少隨機鍵名。 |
返回值: | 返回數組中的一個隨機鍵名,或者如果您規定函數不只一個返回鍵名,則返回包含隨機鍵名的數組。 |
<?php
$a=array("red","green","blue","yellow","brown");
$random_keys=array_rand($a,3)
;
echo $a[$random_keys[0]]."<br>";
echo $a[$random_keys[1]]."<br>";
echo $a[$random_keys[2]];
?>
19、array_reduce():通過使用用戶自定義函數,以字符串返回數組。
array_reduce(array,myfunction,initial)
參數 | 描述 |
---|---|
array | 必需。規定數組。 |
myfunction | 必需。規定函數的名稱。 |
initial | 可選。規定發送到函數的初始值。 |
返回值: | 返回結果值。 |
例:
<?php
function myfunction($v1,$v2)
{
return $v1 . "-" . $v2;
}
$a=array("Dog","Cat","Horse");
print_r(array_reduce($a,"myfunction")
);
?>
結果為:-Dog-Cat-Horse
<?php
function myfunction($v1,$v2)
{
return $v1+$v2;
}
$a=array(10,15,20);
print_r(array_reduce($a,"myfunction",5)
);
?>
結果為:50
18、array_replace():使用後面數組的值替換第一個數組的值。
array_replace(array1,array2,array3...)
參數 | 描述 |
---|---|
array1 | 必需。規定數組。 |
array2 | 可選。指定要替換 array1 的值的數組。 |
array3,... | 可選。指定多個要替換 array1 和 array2, ... 的值的數組。後面數組的值將覆蓋之前數組的值。 |
返回值: | 返回被替換的數組,如果發生錯誤則返回 NULL。 |
提示:您可以向函數傳遞一個數組,或者多個數組。
如果一個鍵存在於第一個數組 array1 同時也存在於第二個數組 array2,第一個數組 array1 中的值將被第二個數組 array2 中的值替換。如果一個鍵僅存在於第一個數組 array1,它將保持不變。
如果一個鍵存在於第二個數組 array2,但是不存在於第一個數組 array1,則會在第一個數組 array1 中創建這個元素。(詳見下面的實例 2)
如果傳遞了多個替換數組,它們將被按順序依次處理,後面數組的值將覆蓋之前數組的值。
19、array_reverse():以相反的順序返回數組。
20、array_search():搜索數組中給定的值並返回鍵名。
array_search(value,array,strict)
參數 | 描述 |
---|---|
value | 必需。規定需要搜素的鍵值。 |
array | 必需。規定被搜索的數組。 |
strict |
可選。如果該參數被設置為 TRUE,則函數在數組中搜索數據類型和值都一致的元素。可能的值:
如果設置為 true,則在數組中檢查給定值的類型,數字 5 和字符串 5 是不同的(參見實例 2)。 |
返回值: |
如果在數組中找到指定的鍵值,則返回對應的鍵名,否則返回 FALSE。 如果在數組中找到鍵值超過一次,則返回第一次找到的鍵值所匹配的鍵名。 |
21、array_shift():刪除數組中首個元素,並返回被刪除元素的值。
22、array_sum():返回數組中值的和。
23、array_splice():刪除並替換數組中指定的元素。
array_splice(array,start,length,array)
參數 | 描述 |
---|---|
array | 必需。規定數組。 |
start |
必需。數值。規定刪除元素的開始位置。
|
length |
可選。數值。規定被移除的元素個數,也是被返回數組的長度。
|
array |
可選。規定帶有要插入原始數組中元素的數組。 如果只有一個元素,則可以設置為字符串,不需要設置為數組。 |
返回值: | 返回由被提取元素組成的數組。 |
24、array_slice():返回數組中被選定的部分。
array_slice(array,start,length,preserve)
參數 | 描述 |
---|---|
array | 必需。規定數組。 |
start |
必需。數值。規定取出元素的開始位置。 0 = 第一個元素。 如果該值設置為正數,則從前往後開始取。 如果該值設置為負數,則從後向前取 start 絕對值。 -2 意味著從數組的倒數第二個元素開始。 |
length |
可選。數值。規定被返回數組的長度。 如果該值設置為整數,則返回該數量的元素。 如果該值設置為負數,則函數將在舉例數組末端這麽遠的地方終止取出。 如果該值未設置,則返回從 start 參數設置的位置開始直到數組末端的所有元素。 |
preserve |
可選。規定函數是保留鍵名還是重置鍵名。可能的值:
|
返回值: | 返回數組中的選定部分。 |
25、array_unique():刪除數組中的重復值。
array_unique() 函數移除數組中的重復的值,並返回結果數組。
當幾個數組元素的值相等時,只保留第一個元素,其他的元素被刪除。
返回的數組中鍵名不變。
被保留的數組將保持第一個數組項的鍵名類型。
26、array_unshift():在數組開頭插入一個或多個元素。
array_unshift(array,value1,value2,value3...)
參數 | 描述 |
---|---|
array | 必需。規定數組。 |
value1 | 必需。規定要插入的值。 |
value2 | 可選。規定要插入的值。 |
value3 | 可選。規定要插入的值。 |
返回值: | 返回數組中新的元素數目。 |
數值鍵名將從 0 開始,以 1 遞增。字符串鍵名將保持不變。
27、array_values():返回數組中所有的值。
array_values() 函數返回一個包含給定數組中所有鍵值的數組,但不保留鍵名。
28、array_walk():對數組中的每個成員應用用戶函數。
array_walk(array,myfunction,userdata...)
參數 | 描述 |
---|---|
array | 必需。規定數組。 |
myfunction | 必需。用戶自定義函數的名稱。 |
userdata,... | 可選。規定用戶自定義函數的參數。您能夠向此函數傳遞任意多參數。 |
返回值: | 如果成功則返回 TRUE,否則返回 FALSE。 |
array_walk() 函數對數組中的每個元素應用用戶自定義函數。在函數中,數組的鍵名和鍵值是參數。
註釋:您可以通過把用戶自定義函數中的第一個參數指定為引用:&$value,來改變數組元素的值
<?php
function myfunction($value,$key)
{
echo "The key $key has the value $value<br>";
}
$a=array("a"=>"red","b"=>"green","c"=>"blue");
array_walk($a,"myfunction")
;
?>
29、compact():創建包含變量名和它們的值的數組。
compact(var1,var2...)
參數 | 描述 |
---|---|
var1 | 必需。可以是帶有變量名的字符串,或者是變量數組。 |
var2,... | 可選。可以是帶有變量名的字符串,或者是變量數組。允許多個參數。 |
返回值: | 返回帶有所有變量名和它們的值的數組。 |
<?php
$firstname = "Bill";
$lastname = "Gates";
$age = "60";
$name = array("firstname", "lastname");
$result = compact($name, "location", "age")
;
print_r($result);
?>
30、list():把數組中的值賦給一些變量。
list(var1,var2...)
參數 | 描述 |
---|---|
var1 | 必需。第一個需要賦值的變量。 |
var2,... | 可選。更多需要賦值的變量。 |
返回值: | 返回被賦值的數組。 |
<?php
$my_array = array("Dog","Cat","Horse");
list($a, $b, $c)
= $my_array;
echo "I have several animals, a $a, a $b and a $c.";
?>
31、extract():從數組中將變量導入到當前的符號表。
extract(array,extract_rules,prefix)
參數 | 描述 |
---|---|
array | 必需。規定要使用的數組。 |
extract_rules |
可選。extract() 函數將檢查每個鍵名是否為合法的變量名,同時也檢查和符號表中已存在的變量名是否沖突。對不合法和沖突的鍵名的處理將根據此參數決定。 可能的值:
|
prefix |
可選。請註意 prefix 僅在 extract_type 的值是 EXTR_PREFIX_SAME,EXTR_PREFIX_ALL,EXTR_PREFIX_INVALID 或 EXTR_PREFIX_IF_EXISTS 時需要。如果附加了前綴後的結果不是合法的變量名,將不會導入到符號表中。 前綴和數組鍵名之間會自動加上一個下劃線。 |
<?php
$a = "Original";
$my_array = array("a" => "Cat","b" => "Dog", "c" => "Horse");
extract($my_array)
;
echo "\$a = $a; \$b = $b; \$c = $c";
?>
32、range():創建包含指定範圍單元的數組。
range(low,high,step)
參數 | 描述 |
---|---|
low | 必需。規定數組的最低值。 |
high | 必需。規定數組的最高值。 |
step | 可選。規定元素之間的步進制。默認是 1。 |
返回值: | 返回包含從 low 到 high 的元素的數組。 |
<?php
$number = range(0,50,10)
;
print_r ($number);
?>
33、shuffle():將數組打亂。
34、sort():對數組排序。(升)
35、rsort():對數組逆向排序。
36、sizeof():count() 的別名
PHP常見數組方法和函數