1. 程式人生 > >PHP常見數組方法和函數

PHP常見數組方法和函數

整數 之間 shuff 參數設置 dom 多少 沖突 sizeof 將不

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

可選。可能的值:

  • CASE_LOWER - 默認值。將數組的鍵轉換為小寫字母。
  • CASE_UPPER - 將數組的鍵轉換為大寫字母。

2、array_chunk():把一個數組分割為新的數組塊。

array_chunk(array,size,preserve_key);
參數描述
array 必需。規定要使用的數組。
size 必需。整數值,規定每個新數組包含多少個元素。
preserve_key

可選。可能的值:

  • true - 保留原始數組中的鍵名。
  • false - 默認。每個結果數組使用從零開始的新數組索引。

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 參數一起使用。可能的值:

  • true - 返回帶有指定鍵值的鍵名。依賴類型,數字 5 與字符串 "5" 是不同的。
  • false - 默認值。不依賴類型,數字 5 與字符串 "5" 是相同的。

返回值: 返回包含數組中所有鍵名的一個新數組。


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

可選。規定排列順序。可能的值:

  • SORT_ASC - 默認。按升序排列 (A-Z)。
  • SORT_DESC - 按降序排列 (Z-A)。
sorting type

可選。規定排序類型。可能的值:

  • SORT_REGULAR - 默認。把每一項按常規順序排列(Standard ASCII,不改變類型)。
  • SORT_NUMERIC - 把每一項作為數字來處理。
  • SORT_STRING - 把每一項作為字符串來處理。
  • SORT_LOCALE_STRING - 把每一項作為字符串來處理,基於當前區域設置(可通過 setlocale() 進行更改)。
  • SORT_NATURAL - 把每一項作為字符串來處理,使用類似 natsort() 的自然排序。
  • SORT_FLAG_CASE - 可以結合(按位或)SORT_STRING 或 SORT_NATURAL 對字符串進行排序,不區分大小寫。
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
  • false - 默認

如果設置為 true,則在數組中檢查給定值的類型,數字 5 和字符串 5 是不同的(參見實例 2)。

返回值:

如果在數組中找到指定的鍵值,則返回對應的鍵名,否則返回 FALSE。

如果在數組中找到鍵值超過一次,則返回第一次找到的鍵值所匹配的鍵名。

21、array_shift():刪除數組中首個元素,並返回被刪除元素的值。

22、array_sum():返回數組中值的和。

23、array_splice():刪除並替換數組中指定的元素。

array_splice(array,start,length,array)
參數描述
array 必需。規定數組。
start

必需。數值。規定刪除元素的開始位置。

  • 0 = 第一個元素。
  • 如果該值設置為正數,則從數組中該值指定的偏移量開始移除。
  • 如果該值設置為負數,則從數組末端倒數該值指定的偏移量開始移除。
  • -2 意味著從數組的倒數第二個元素開始。
length

可選。數值。規定被移除的元素個數,也是被返回數組的長度。

  • 如果該值設置為正數,則移除該數量的元素。
  • 如果該值設置為負數,則移除從 start 到數組末端倒數 length 為止中間所有的元素。
  • 如果該值未設置,則移除從 start 參數設置的位置開始直到數組末端的所有元素。
array

可選。規定帶有要插入原始數組中元素的數組。

如果只有一個元素,則可以設置為字符串,不需要設置為數組。

返回值: 返回由被提取元素組成的數組。

24、array_slice():返回數組中被選定的部分。

array_slice(array,start,length,preserve)
參數描述
array 必需。規定數組。
start

必需。數值。規定取出元素的開始位置。 0 = 第一個元素。

如果該值設置為正數,則從前往後開始取。

如果該值設置為負數,則從後向前取 start 絕對值。 -2 意味著從數組的倒數第二個元素開始。

length

可選。數值。規定被返回數組的長度。

如果該值設置為整數,則返回該數量的元素。

如果該值設置為負數,則函數將在舉例數組末端這麽遠的地方終止取出。

如果該值未設置,則返回從 start 參數設置的位置開始直到數組末端的所有元素。

preserve

可選。規定函數是保留鍵名還是重置鍵名。可能的值:

  • true - 保留鍵名
  • false - 默認。重置鍵名
返回值: 返回數組中的選定部分。

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() 函數將檢查每個鍵名是否為合法的變量名,同時也檢查和符號表中已存在的變量名是否沖突。對不合法和沖突的鍵名的處理將根據此參數決定。

可能的值:

  • EXTR_OVERWRITE - 默認。如果有沖突,則覆蓋已有的變量。
  • EXTR_SKIP - 如果有沖突,不覆蓋已有的變量。
  • EXTR_PREFIX_SAME - 如果有沖突,在變量名前加上前綴 prefix。
  • EXTR_PREFIX_ALL - 給所有變量名加上前綴 prefix。
  • EXTR_PREFIX_INVALID - 僅在不合法或數字變量名前加上前綴 prefix。
  • EXTR_IF_EXISTS - 僅在當前符號表中已有同名變量時,覆蓋它們的值。其它的都不處理。
  • EXTR_PREFIX_IF_EXISTS - 僅在當前符號表中已有同名變量時,建立附加了前綴的變量名,其它的都不處理。
  • EXTR_REFS - 將變量作為引用提取。導入的變量仍然引用了數組參數的值。
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常見數組方法和函數