PHP 數組用法

array() 函數用於建立數組。在 PHP 中,有三種類型的數組:php

索引數組 - 帶有數字索引的數組算法

關聯數組 - 帶有指定的鍵的數組數組

多維數組 - 包含一個或多個數組的數組函數

list(var1,var2...)      ui

var1 必需。第一個須要賦值的變量。var2... 可選。更多須要賦值的變量。spa

在一次操做中給一組變量賦值。該函數只用於數字索引的數組,且假定數字索引從 0 開始。      指針

$my_array = array("Dog","Cat","Horse");
list($a, , $c) = $my_array;
echo "我在這裏只用了 $a 和 $c 變量。";
//我在這裏只用了 Dog 和 Horse 變量。

shuffle(array)        code

array 必需。規定要使用的數組。對象

把數組中的元素按隨機順序從新排列。該函數爲數組中的元素分配新的鍵名。已有鍵名將被刪除 。排序

$my_array = array("a"=>"red","b"=>"green","c"=>"blue","d"=>"yellow","e"=>"purple");
shuffle($my_array);
print_r($my_array);
//Array ( [0] => green [1] => purple [2] => yellow [3] => red [4] => blue )

array_rand(array,number)     

array 必需。規定數組。 number 可選。規定返回多少隨機鍵名。

返回數組中的隨機鍵名,或者若是您規定函數返回不僅一個鍵名,則返回包含隨機鍵名的數組。

array_rand() 函數從數組中隨機選出一個或多個元素,並返回。

第二個參數用來肯定要選出幾個元素。若是選出的元素不止一個,則返回包含隨機鍵名的數組,不然返回該元素的鍵名。

註釋:自 PHP 4.2.0 起,再也不須要用 srand() 或 mt_srand() 函數給隨機數發生器播種,現已被自動完成。

$a=array("a"=>"red","b"=>"green","c"=>"blue","d"=>"yellow");
print_r(array_rand($a,1));
//d

$a=array("a"=>"red","b"=>"green","c"=>"blue","d"=>"yellow");
print_r(array_rand($a,2));
//Array ( [0] => a [1] => d )

range(low,high,step)        

low 必需。規定數組的最低值 high 必需。規定數組的最高值。step 可選。規定元素之間的步進制。默認是 1。

建立一個包含指定範圍的元素的數組。該函數返回一個包含從low到high之間的元素的數組。註釋:若是low參數大於 high 參數,則建立的數組將是從 high 到 low。

$letter = range("a","d");
print_r ($letter);
//Array ( [0] => a [1] => b [2] => c [3] => d )

$number = range(0,50,10);
print_r ($number);
//Array ( [0] => 0 [1] => 10 [2] => 20 [3] => 30 [4] => 40 [5] => 50 )

 array_keys(array,value,strict)

array 必需。規定數組。value 可選。您能夠指定鍵值,而後只有該鍵值對應的鍵名會被返回。

strict 可選。與 value 參數一塊兒使用。可能的值:true - 返回帶有指定鍵值的鍵名。依賴類型,數字 5 與字符串 "5" 是不一樣的。false - 默認值。不依賴類型,數字 5 與字符串 "5" 是相同的。

返回包含數組中全部鍵名的一個新數組。若是提供了第二個參數,則只返回鍵值爲該值的鍵名。若是 strict參數指定爲 true,則 PHP 會使用全等比較 (===) 來嚴格檢查鍵值的數據類型。

$a=array("Volvo"=>"XC90","BMW"=>"X5","Toyota"=>"Highlander");
print_r(array_keys($a));
//Array ( [0] => Volvo [1] => BMW [2] => Toyota )

$a=array(10,20,30,"10");
print_r(array_keys($a,"10",true));
//Array ( [0] => 3 )

$a=array(10,20,30,"10");
print_r(array_keys($a,"10",false));
//Array ( [0] => 0 [1] => 3 )

array_values(array)    

array 必需。規定數組。

返回一個包含給定數組中全部鍵值的數組,但不保留鍵名。被返回的數組將使用數值鍵,從 0 開始並以 1 遞增。

$a=array("Name"=>"Bill","Age"=>"60","Country"=>"USA");
print_r(array_values($a));
//Array ( [0] => Bill [1] => 60 [2] => USA )

array_key_exists(key,array)

key 必需。規定鍵名。    array 必需。規定數組。

檢查某個數組中是否存在指定的鍵名,若是鍵名存在則返回 true,若是鍵名不存在則返回 false。

請記住,若是您指定數組的時候省略了鍵名,將會生成從 0 開始而且每一個鍵值對應以 1 遞增的整數鍵名。

$a=array("Volvo"=>"XC90","BMW"=>"X5");
if (key_exists("Toyota",$a))
  {
  echo "鍵存在!";
  }
else
  {
  echo "鍵不存在!";
  }
//鍵不存在!

$a=array("Volvo","BMW");
if (array_key_exists(0,$a))
  {
  echo "鍵存在!";
  }
else
  {
  echo "鍵不存在!";
  }
//鍵存在!

array_fill(index,number,value 

index 必需。被返回數組的第一個索引。 number 必需。規定要插入的元素數。 value 必需。規定供填充數組所使用的值。

用鍵值填充數組。array_fill() 函數用給定的值填充數組,返回的數組有 number  個元素,值爲 value。返回的數組使用數字索引,從 start 位置開始並遞增。若是 number 爲 0 或小於 0,就會出錯。

$a1=array_fill(3,4,"blue");
print_r($a1);
//Array ( [3] => blue [4] => blue [5] => blue [6] => blue )

array_fill_keys(keys,value)  

keys 必需。使用該數組的值做爲鍵。非法值將被轉換爲字符串。value 必需。填充數組所使用的值。

使用指定的鍵和值填充數組。

$keys=array("a","b","c","d");
$a1=array_fill_keys($keys,"blue");
print_r($a1);
//Array ( [a] => blue [b] => blue [c] => blue [d] => blue )

array_filter(array,callbackfunction)  

array 必需。規定要過濾的數組。callbackfunction 必需。規定要使用的回調函數。

用回調函數過濾數組中的值。該函數把輸入數組中的每一個鍵值傳給回調函數。若是回調函數返回 true,則把輸入數組中的當前鍵值返回結果數組中。數組鍵名保持不變。

function test_odd($var)
{
return($var & 1);
}

$a1=array("a","b",2,3,4);
print_r(array_filter($a1,"test_odd"));
//Array ( [3] => 3 )

array_flip(array)    

array 必需。規定需進行鍵/值對反轉的數組。

反轉/交換數組中全部的鍵名以及它們關聯的鍵值。返回一個反轉後的數組,若是同一值出現了屢次,則最後一個鍵名將做爲它的值,全部其餘的鍵名都將丟失。若是原數組中的值的數據類型不是字符串或整數,函數將報錯。

$a1=array("a"=>"red","b"=>"green","c"=>"blue","d"=>"yellow");
$result=array_flip($a1);
print_r($result);
//Array ( [red] => a [green] => b [blue] => c [yellow] => d )

array_change_key_case(array,case)

array 必需。規定要使用的數組。case 可選。可能的值:CASE_LOWER - 默認值。將數組的鍵轉換爲小寫字母。CASE_UPPER - 將數組的鍵轉換爲大寫字母。

將數組的全部的鍵都轉換爲大寫字母或小寫字母。數組的數字索引不發生變化。若是未提供可選參數(即第二個參數),則默認轉換爲小寫字母。若是在運行該函數時兩個或多個鍵相同,則最後的元素會覆蓋其餘元素。

$age=array("Bill"=>"60","Steve"=>"56","Mark"=>"31");
print_r(array_change_key_case($age,CASE_UPPER));
//Array ( [BILL] => 60 [STEVE] => 56 [MARK] => 31 )

$pets=array("a"=>"Cat","B"=>"Dog","c"=>"Horse","b"=>"Bird");
print_r(array_change_key_case($pets,CASE_UPPER));
//Array ( [A] => Cat [B] => Bird [C] => Horse )

array_chunk(array,size,preserve_key)

array 必需。規定要使用的數組。    size 必需。整數值,規定每一個新數組包含多少個元素。

preserve_key 可選。可能的值:true - 保留原始數組中的鍵名。false - 默認。每一個結果數組使用從零開始的新數組索引。

把數組分割爲新的數組塊。其中每一個數組的單元數目由 size 參數決定。最後一個數組的單元數目可能會少幾個。可選參數 preserve_key是一個布爾值,它指定新數組的元素是否有和原數組相同的鍵(用於關聯數組),仍是從 0 開始的新數字鍵(用於索引數組)。默認是分配新的鍵。

$cars=array("Volvo","BMW","Toyota","Honda","Mercedes","Opel");
print_r(array_chunk($cars,2));
//Array ( [0] => Array ( [0] => Volvo [1] => BMW ) [1] => Array ( [0] => Toyota [1] => Honda ) [2] => Array ( [0] => Mercedes [1] => Opel ) )

$age=array("Bill"=>"60","Steve"=>"56","Mark"=>"31","David"=>"35");
print_r(array_chunk($age,2,true));
//Array ( [0] => Array ( [Bill] => 60 [Steve] => 56 ) [1] => Array ( [Mark] => 31 [David] => 35 ) )

array_column(array,column_key,index_key)

array 必需。規定要使用的多維數組(記錄集)。

column_key 必需。須要返回值的列。能夠是索引數組的列的整數索引,或者是關聯數組的列的字符串鍵值。該參數也能夠是 NULL,此時將返回整個數組(配合 index_key 參數來重置數組鍵的時候,很是有用)。

index_key 可選。用做返回數組的索引/鍵的列。

返回輸入數組中某個單一列的值。

$a = array(
  array(
    'id' => 5698,
    'first_name' => 'Bill',
    'last_name' => 'Gates',
  ),
  array(
    'id' => 4767,
    'first_name' => 'Steve',
    'last_name' => 'Jobs',
  ),
  array(
    'id' => 3809,
    'first_name' => 'Mark',
    'last_name' => 'Zuckerberg',
  )
);

$last_names = array_column($a, 'last_name');
print_r($last_names);
//Array([0] => Gates [1] => Jobs [2] => Zuckerberg)

$a = array(
  array(
    'id' => 5698,
    'first_name' => 'Bill',
    'last_name' => 'Gates',
  ),
  array(
    'id' => 4767,
    'first_name' => 'Steve',
    'last_name' => 'Jobs',
  )
  array(
    'id' => 3809,
    'first_name' => 'Mark',
    'last_name' => 'Zuckerberg',
  )
);
$last_names = array_column($a, 'last_name', 'id');
print_r($last_names);
//Array( [5698] => Gates [4767] => Jobs [3809] => Zuckerberg)

array_combine(keys,values)

keys    必需。鍵名數組。        values    必需。鍵值數組。

經過合併兩個數組來建立一個新數組,其中的一個數組是鍵名,另外一個數組的值爲鍵值。鍵名數組和鍵值數組的元素個數必須相同!若是其中一個數組爲空,或者兩個數組的元素個數不一樣,則該函數返回 false。

$fname=array("Bill","Steve","Mark");
$age=array("60","56","31");

$c=array_combine($fname,$age);
print_r($c);
//Array ( [Bill] => 60 [Steve] => 56 [Mark] => 31 )

array_count_values(array)

array    必需。規定須要對值進行計數的數組。

對數組中的全部值進行計數。用於統計數組中全部值出現的次數。本函數返回一個數組,其元素的鍵名是原數組的值,鍵值是該值在原數組中出現的次數。

$a=array("A","Cat","Dog","A","Dog");
print_r(array_count_values($a));
//Array ( [A] => 2 [Cat] => 1 [Dog] => 2 )

array_map(myfunction,array1,array2,array3...)

myfunction    必需。用戶自定義函數的名稱,或者是 null。

array1    必需。規定數組。          array2    可選。規定數組。        array3    可選。規定數組。

將用戶自定義函數做用到數組中的每一個值上,並返回用戶自定義函數做用後的帶有新值的數組。

回調函數接受的參數數目應該和傳遞給 array_map() 函數的數組數目一致。您能夠向函數輸入一個或者多個數組。

function myfunction($v)
{
  return($v*$v);
}

$a=array(1,2,3,4,5);
print_r(array_map("myfunction",$a));
//Array ( [0] => 1 [1] => 4 [2] => 9 [3] => 16 [4] => 25 )

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));
//Array ( [0] => different [1] => same [2] => different )

function myfunction($v)
{
$v=strtoupper($v);
  return $v;
}

$a=array("Animal" => "horse", "Type" => "mammal");
print_r(array_map("myfunction",$a));
//Array ( [Animal] => HORSE [Type] => MAMMAL )

$a1=array("Dog","Cat");
$a2=array("Puppy","Kitten");
print_r(array_map(null,$a1,$a2));
//Array ( [0] => Array ( [0] => Dog [1] => Puppy ) [1] => Array ( [0] => Cat [1] => Kitten ) )

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    可選。規定數組。

返回排序數組。您能夠輸入一個或多個數組。函數先對第一個數組進行排序,接着是其餘數組,若是兩個或多個值相同,它將對下一個數組進行排序。 註釋:字符串鍵名將被保留,可是數字鍵名將被從新索引,從 0 開始,並以 1 遞增。 您能夠在每一個數組後設置排序順序和排序類型參數。若是沒有設置,每一個數組參數會使用默認值。

對多個數組或多維數組進行排序。參數中的數組被當成一個表的列並以行來進行排序 - 這相似 SQL 的 ORDER BY 子句的功能。第一個數組是要排序的主要數組。數組中的行(值)比較爲相同的話,就會按照下一個輸入數組中相應值的大小進行排序,依此類推。

第一個參數是數組,隨後的每個參數多是數組,也多是下面的排序順序標誌(排序標誌用於更改默認的排列順序)之一:SORT_ASC - 默認,按升序排列。(A-Z)    SORT_DESC - 按降序排列。(Z-A)

隨後能夠指定排序的類型:SORT_REGULAR - 默認。將每一項按常規順序排列。SORT_NUMERIC - 將每一項按數字順序排列。SORT_STRING - 將每一項按字母順序排列。

count(array,mode)    sizeof(array,mode)

array    必需。規定數組。    mode    可選。規定模式。可能的值:0 - 默認。不對多維數組中的全部元素進行計數。1 - 遞歸地計數數組中元素的數目(計算多維數組中的全部元素)

返回數組中元素的數目。sizeof() 函數是count() 函數的別名。

計算數組中的單元數目或對象中的屬性個數。對於數組,返回其元素的個數,對於其餘值,返回 1。若是參數是變量而變量沒有定義,則返回 0。若是 mode 被設置爲 COUNT_RECURSIVE(或 1),則會遞歸底計算多維數組中的數組的元素個數。

$cars=array("Volvo","BMW","Toyota");
echo count($cars);
//3

$cars=array
  (
  "Volvo"=>array
  (
  "XC60",
  "XC90"
  ),
  "BMW"=>array
  (
  "X3",
  "X5"
  ),
  "Toyota"=>array
  (
  "Highlander"
  )
  );

echo "常規計數:" . count($cars)." ";
echo "遞歸計數:" . count($cars,1);
//3 8

compact(var1,var2...)    

var1    必需。能夠是帶有變量名的字符串,或者是變量數組。

var2,…    可選。能夠是帶有變量名的字符串,或者是變量數組。容許多個參數。

建立包含變量名和它們的值的數組。任何沒有變量名與之對應的字符串都被略過。

compact() 函數建立一個由參數所帶變量組成的數組。若是參數中存在數組,該數組中變量的值也會被獲取。

本函數返回的數組是一個關聯數組,鍵名爲函數的參數,鍵值爲參數中變量的值。

$firstname = "Bill";
$lastname = "Gates";
$age = "60";
$result = compact("firstname", "lastname", "age");
print_r($result);
//Array ( [firstname] => Bill [lastname] => Gates [age] => 60 )

$firstname = "Bill";
$lastname = "Gates";
$age = "60";
$name = array("firstname", "lastname");
$result = compact($name, "location", "age");
print_r($result);
//Array ( [firstname] => Bill [lastname] => Gates [age] => 60 )

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 時須要。若是附加了前綴後的結果不是合法的變量名,將不會導入到符號表中。前綴和數組鍵名之間會自動加上一個下劃線。

從數組中將變量導入到當前的符號表。該函數使用數組鍵名做爲變量名,使用數組鍵值做爲變量值。針對數組中的每一個元素,將在當前符號表中建立對應的一個變量。第二個參數type 用於指定當某個變量已經存在,而數組中又有同名元素時,extract() 函數如何對待這樣的衝突。該函數返回成功導入到符號表中的變量數目。

$a = "Original";
$my_array = array("a" => "Cat","b" => "Dog", "c" => "Horse");
extract($my_array);
echo "\$a = $a; \$b = $b; \$c = $c";
//$a = Cat; $b = Dog; $c = Horse

$a = "Original";
$my_array = array("a" => "Cat", "b" => "Dog", "c" => "Horse");
extract($my_array, EXTR_PREFIX_SAME, "dup");
echo "\$a = $a; \$b = $b; \$c = $c; \$dup_a = $dup_a";
//$a = Original; $b = Dog; $c = Horse; $dup_a = Cat

in_array(search,array,type)

search      必需。規定要在數組搜索的值。

array    必需。規定要搜索的數組。

type    可選。若是設置該參數爲 true,則檢查搜索的數據與數組的值的類型是否相同。

搜索數組中是否存在指定的值。若是search參數是字符串且type參數被設置爲 TRUE,則搜索區分大小寫。

若是給定的值 search存在於數組 array 中則返回 true。若是第三個參數設置爲 true,函數只有在元素存在於數組中且數據類型與給定值相同時才返回 true。若是沒有在數組中找到參數,函數返回 false。

$people = array("Bill", "Steve", "Mark", "David");
if (in_array("Mark", $people))
  {
  echo "匹配已找到";
  }
else
  {
  echo "匹配未找到";
  }
//匹配已找到

$people = array("Bill", "Steve", "Mark", "David");
if (in_array("23", $people, TRUE))
  {
  echo "匹配已找到 ";
  }
else
  {
  echo "匹配未找到 ";
  }
if (in_array("Mark",$people, TRUE))
  {
  echo "匹配已找到 ";
  }
else
  {
  echo "匹配未找到 ";
  }

if (in_array(23,$people, TRUE))
  {
  echo "匹配已找到 ";
  }
else
  {
  echo "匹配未找到 ";
  }
//匹配未找到 匹配已找到 匹配未找到

array_merge(array1,array2,array3...)

array1    必需。規定數組。array2   可選。規定數組。    array3   可選。規定數組。

把一個或多個數組合併爲一個數組。您能夠向函數輸入一個或者多個數組。若是兩個或更多個數組元素有相同的鍵名,則最後的元素會覆蓋其餘元素。若是您僅向 array_merge() 函數輸入一個數組,且鍵名是整數,則該函數將返回帶有整數鍵名的新數組,其鍵名以 0 開始進行從新索引。

$a1=array("a"=>"red","b"=>"green");
$a2=array("c"=>"blue","b"=>"yellow");
print_r(array_merge($a1,$a2));
//Array ( [a] => red [b] => yellow [c] => blue )

$a=array(3=>"red",4=>"green");
print_r(array_merge($a));
//Array ( [0] => red [1] => green )

array_merge_recursive(array1,array2,array3...) 

array1    必需。規定數組。array2   可選。規定數組。    array3   可選。規定數組。

把一個或多個數組合併爲一個數組。

該函數與 array_merge()  函數的區別在於處理兩個或更多個數組元素有相同的鍵名時。array_merge_recursive() 不會進行鍵名覆蓋,而是將多個相同鍵名的值遞歸組成一個數組。

若是您僅僅向 array_merge_recursive() 函數輸入一個數組,結果與 array_merge() 相同,函數將返回帶有整數鍵名的新數組,其鍵名以 0 開始進行從新索引。

$a1=array("a"=>"red","b"=>"green");
$a2=array("c"=>"blue","b"=>"yellow");
print_r(array_merge_recursive($a1,$a2));
//Array ( [a] => red [b] => Array ( [0] => green [1] => yellow ) [c] => blue )

array_pad(array,size,value)     

array    必需。規定數組。size  必需。規定從函數返回的數組中元素的個數。    value   必需。規定從函數返回的數組中新元素的值。

將指定數量的帶有指定值的元素插入到數組中。若是您將size參數設置爲負數,該函數會在原始數組以前插入新的元素 。若是 size參數小於原始數組的長度,該函數不會刪除任何元素。

$a=array("red","green");
print_r(array_pad($a,5,"blue"));
//Array ( [0] => red [1] => green [2] => blue [3] => blue [4] => blue )

$a=array("red","green");
print_r(array_pad($a,-5,"blue"));
//Array ( [0] => blue [1] => blue [2] => blue [3] => red [4] => green )

array_product(array)

array    必需。規定數組。

計算並返回數組的乘積。

$a=array(5,5);
echo(array_product($a));
//25

array_sum(array)

array    必需。規定數組。

返回數組中全部值的和。若是全部值都是整數,則返回一個整數值。若是其中有一個或多個值是浮點數,則返回浮點數。

$a=array(5,15,25);
echo array_sum($a);
//45

array_pop(array)    出棧

array    必需。規定數組。

刪除數組中的最後一個元素。

$a=array("red","green","blue");
array_pop($a);
print_r($a);
//Array ( [0] => red [1] => green )

array_push(array,value1,value2...)    入棧

array    必需。規定數組。    value1    必需。規定要添加的值。     value2    可選。規定要添加的值。

向第一個參數的數組尾部添加一個或多個元素(入棧),而後返回新數組的長度。該函數等於屢次調用 $array[] = $value。

即便數組中有字符串鍵名,您添加的元素也始終是數字鍵。

若是用 array_push() 來給數組增長一個單元,還不如用 $array[] =,由於這樣沒有調用函數的額外負擔。

若是第一個參數不是數組,array_push() 將發出一條警告。這和 $var[] 的行爲不一樣,後者會新建一個數組。

$a=array("red","green");
array_push($a,"blue","yellow");
print_r($a);
//Array ( [0] => red [1] => green [2] => blue [3] => yellow )

$a=array("a"=>"red","b"=>"green");
array_push($a,"blue","yellow");
print_r($a)
//Array ( [a] => red [b] => green [0] => blue [1] => yellow )

array_shift(array)     

array    必需。規定數組。 

刪除數組中第一個元素,並返回被刪除元素的值。

若是鍵名是數字的,全部元素都會得到新的鍵名,從 0 開始,並以 1 遞增。

$a=array("a"=>"red","b"=>"green","c"=>"blue");
echo array_shift($a);
print_r ($a);
//redArray ( [b] => green [c] => blue )

$a=array(0=>"red",1=>"green",2=>"blue");
echo array_shift($a);
print_r ($a);
//redArray ( [0] => green [1] => blue )

array_unshift(array,value1,value2,value3...)    

array    必需。規定數組。     value1    必需。規定要插入的值。

value2    可選。規定要插入的值。    value3    可選。規定要插入的值。

用於向數組插入新元素。新數組的值將被插入到數組的開頭。 

被加上的元素做爲一個總體添加,這些元素在數組中的順序和在參數中的順序同樣。

該函數會返回數組中元素的個數。數值鍵名將從 0 開始,以 1 遞增。字符串鍵名將保持不變。

$a=array("a"=>"red","b"=>"green");
array_unshift($a,"blue");
print_r($a);
//Array ( [0] => blue [a] => red [b] => green )

$a=array("a"=>"red","b"=>"green");
print_r(array_unshift($a,"blue"));
//3

$a=array(0=>"red",1=>"green");
array_unshift($a,"blue");
print_r($a);
//Array ( [0] => blue [1] => red [2] => green )

array_reduce(array,myfunction,initial)    

array  必需。規定數組。  myfunction  必需。規定函數的名稱。 initial  可選。規定發送到函數的初始值。

向用戶自定義函數發送數組中的值,並返回一個字符串。

若是數組是空的且未傳遞 initial 參數,該函數返回 NULL。

array_reduce() 函數用回調函數迭代地將數組簡化爲單一的值。若是指定第三個參數,則該參數將被當成是數組中的第一個值來處理,或者若是數組爲空的話就做爲最終返回值。

function myfunction($v1,$v2)
{
return $v1 . "-" . $v2;
}
$a=array("Dog","Cat","Horse");
print_r(array_reduce($a,"myfunction"));
//-Dog-Cat-Horse

function myfunction($v1,$v2)
{
return $v1 . "-" . $v2;
}
$a=array("Dog","Cat","Horse");
print_r(array_reduce($a,"myfunction",5));
//5-Dog-Cat-Horse

function myfunction($v1,$v2)
{
return $v1+$v2;
}
$a=array(10,15,20);
print_r(array_reduce($a,"myfunction",5));
//50

array_replace(array1,array2,array3...)    

array1  必需。規定數組。  array2  可選。指定要替換 array1 的值的數組。array3… 可選。指定多個要替換array1和 array2, ... 的值的數組。後面數組的值將覆蓋以前數組的值。

使用後面數組的值替換第一個數組的值。

您能夠向函數傳遞一個數組,或者多個數組。若是一個鍵存在於第一個數組 array1 同時也存在於第二個數組 array2,第一個數組 array1 中的值將被第二個數組 array2 中的值替換。若是一個鍵僅存在於第一個數組 array1,它將保持不變。若是一個鍵存在於第二個數組 array2,可是不存在於第一個數組 array1,則會在第一個數組 array1 中建立這個元素。若是傳遞了多個替換數組,它們將被按順序依次處理,後面數組的值將覆蓋以前數組的值。

 

$a1=array("red","green");
$a2=array("blue","yellow");
print_r(array_replace($a1,$a2));
//Array ( [0] => blue [1] => yellow )

$a1=array("a"=>"red","b"=>"green");
$a2=array("a"=>"orange","burgundy");
print_r(array_replace($a1,$a2));
//Array ( [a] => orange [b] => green [0] => burgundy )

array_replace_recursive(array1,array2,array3...)

array1  必需。規定數組。  array2  可選。指定要替換 array1 的值的數組。array3… 可選。指定多個要替換array1和 array2, ... 的值的數組。後面數組的值將覆蓋以前數組的值。

遞歸地使用後面數組的值替換第一個數組的值。

$a1=array("a"=>array("red"),"b"=>array("green","blue"),);
$a2=array("a"=>array("yellow"),"b"=>array("black"));
print_r(array_replace_recursive($a1,$a2));
//Array ( [a] => Array ( [0] => yellow ) [b] => Array ( [0] => black [1] => blue ) )

$a1=array("a"=>array("red"),"b"=>array("green","blue"));
$a2=array("a"=>array("yellow"),"b"=>array("black"));
$a3=array("a"=>array("orange"),"b"=>array("burgundy"));
print_r(array_replace_recursive($a1,$a2,$a3));
//Array ( [a] => Array ( [0] => orange ) [b] => Array ( [0] => burgundy [1] => blue ) )

$a1=array("a"=>array("red"),"b"=>array("green","blue"),);
$a2=array("a"=>array("yellow"),"b"=>array("black"));
$result=array_replace_recursive($a1,$a2);
print_r($result);
$result=array_replace($a1,$a2);
print_r($result);
//Array ( [a] => Array ( [0] => yellow ) [b] => Array ( [0] => black [1] => blue ) ) Array ( [a] => Array ( [0] => yellow ) [b] => Array ( [0] => black ) )

 array_reverse(array,preserve)       

array1  必需。規定數組。preserve    可選。規定是否保留原始數組的鍵名。這個參數是 PHP 4.0.3 中新加的。可能的值:true/false

以相反的元素順序返回數組。將原數組中的元素順序翻轉,建立新的數組並返回。若是第二個參數指定爲 true,則元素的鍵名保持不變,不然鍵名將丟失。

$a=array("a"=>"Volvo","b"=>"BMW","c"=>"Toyota");
print_r(array_reverse($a));
//Array ( [c] => Toyota [b] => BMW [a] => Volvo )

$a=array("Volvo","XC90",array("BMW","Toyota"));
$reverse=array_reverse($a);
$preserve=array_reverse($a,true);
print_r($a);
print_r($reverse);
print_r($preserve);
//Array ( [0] => Volvo [1] => XC90 [2] => Array ( [0] => BMW [1] => Toyota ) ) 
//Array ( [0] => Array ( [0] => BMW [1] => Toyota ) [1] => XC90 [2] => Volvo )
//Array ( [2] => Array ( [0] => BMW [1] => Toyota ) [1] => XC90 [0] => Volvo )

以相反的順序返回數組。對於整數鍵名,若是第二個參數指定爲 true,則元素的鍵名保持不變,不然鍵名將丟失。

array_search(value,array,strict)

value  必需。規定須要搜素的鍵值。    array    必需。規定被搜索的數組。

strict    可選。若是該參數被設置爲 TRUE,則函數在數組中搜索數據類型和值都一致的元素。可能的值:true/false(默認)若是設置爲 true,則在數組中檢查給定值的類型,數字 5 和字符串 5 是不一樣的。

在數組中搜索某個鍵值,並返回對應的鍵名。在數組中查找一個鍵值。若是找到了該值,匹配元素的鍵名會被返回。若是沒找到,則返回 false。若是在數組中找到鍵值超過一次,則返回第一次找到的鍵值所匹配的鍵名。

$a=array("a"=>"red","b"=>"green","c"=>"blue");
echo array_search("red",$a);
//a

$a=array("a"=>"5","b"=>5,"c"=>"5");
echo array_search(5,$a,true);
//b

array_slice(array,start,length,preserve)

array    必需。規定數組。    

start    必需。數值。規定取出元素的開始位置。 0 = 第一個元素。若是該值設置爲正數,則從前日後開始取。若是該值設置爲負數,則從後向前取 start 絕對值。 -2 意味着從數組的倒數第二個元素開始。

length    可選。數值。規定被返回數組的長度。若是該值設置爲整數,則返回該數量的元素。若是該值設置爲負數,則函數將在舉例數組末端這麼遠的地方終止取出。若是該值未設置,則返回從 start 參數設置的位置開始直到數組末端的全部元素。

preserve    可選。規定函數是保留鍵名仍是重置鍵名。可能的值:true - 保留鍵名。false - 默認。重置鍵名

在數組中根據條件取出一段值,並返回。若是數組有字符串鍵,所返回的數組將保留鍵名。

$a=array("red","green","blue","yellow","brown");
print_r(array_slice($a,2));
//Array ( [0] => blue [1] => yellow [2] => brown )

$a=array("red","green","blue","yellow","brown");
print_r(array_slice($a,1,2));
//Array ( [0] => green [1] => blue )

$a=array("red","green","blue","yellow","brown");
print_r(array_slice($a,-2,1));
//Array ( [0] => yellow )

$a=array("red","green","blue","yellow","brown");
print_r(array_slice($a,1,2,true));
//Array ( [1] => green [2] => blue )

$a=array("a"=>"red","b"=>"green","c"=>"blue","d"=>"yellow","e"=>"brown");
print_r(array_slice($a,1,2));
$a=array("0"=>"red","1"=>"green","2"=>"blue","3"=>"yellow","4"=>"brown");
print_r(array_slice($a,1,2));
//Array ( [b] => green [c] => blue ) Array ( [0] => green [1] => blue )

array_splice(array,start,length,array)

array    必需。規定數組。    

start    必需。數值。規定取出元素的開始位置。 0 = 第一個元素。若是該值設置爲正數,則從前日後開始取。若是該值設置爲負數,則從後向前取 start 絕對值。 -2 意味着從數組的倒數第二個元素開始。

length    可選。數值。規定被返回數組的長度。若是該值設置爲整數,則返回該數量的元素。若是該值設置爲負數,則函數將在舉例數組末端這麼遠的地方終止取出。若是該值未設置,則返回從 start 參數設置的位置開始直到數組末端的全部元素。

array    可選。規定帶有要插入原始數組中元素的數組。若是隻有一個元素,則能夠設置爲字符串,不須要設置爲數組。

從數組中移除選定的元素,並用新元素取代它。該函數也將返回包含被移除元素的數組。若是函數沒有移除任何元素(length=0),則將從 start 參數的位置插入被替換數組。不保留被替換數組中的鍵名。

array_splice() 函數與 array_slice() 函數相似,選擇數組中的一系列元素,但不返回,而是刪除它們並用其它值代替。若是提供了第四個參數,則以前選中的那些元素將被第四個參數指定的數組取代。最後生成的數組將會返回。

$a1=array("a"=>"red","b"=>"green","c"=>"blue","d"=>"yellow");
$a2=array("a"=>"purple","b"=>"orange");
array_splice($a1,0,2,$a2);
print_r($a1);
//Array ( [0] => purple [1] => orange [c] => blue [d] => yellow )

$a1=array("a"=>"red","b"=>"green","c"=>"blue","d"=>"yellow");
$a2=array("a"=>"purple","b"=>"orange");
print_r(array_splice($a1,0,2,$a2));
//Array ( [a] => red [b] => green )

$a1=array("0"=>"red","1"=>"green");
$a2=array("0"=>"purple","1"=>"orange");
array_splice($a1,1,0,$a2);
print_r($a1);
//Array ( [0] => red [1] => purple [2] => orange [3] => green )

array_unique(array)

array    必需。規定數組。 

sortingtype    可選。規定如何比較數組元素/項目。可能的值:SORT_STRING - 默認。把項目做爲字符串來比較。SORT_REGULAR - 把每一項按常規順序排列(Standard ASCII,不改變類型)。SORT_NUMERIC - 把每一項做爲數字來處理。SORT_LOCALE_STRING - 把每一項做爲字符串來處理,基於當前區域設置(可經過 setlocale() 進行更改)。

移除數組中的重複的值,並返回結果數組。當幾個數組元素的值相等時,只保留第一個元素,其餘的元素被刪除。返回的數組中鍵名不變。被保留的數組將保持第一個數組項的鍵名類型。

$a=array("a"=>"red","b"=>"green","c"=>"red");
print_r(array_unique($a));
//Array ( [a] => red [b] => green )

array_walk(array,myfunction,userdata...)    

array    必需。規定數組。 myfunction 必需。用戶自定義函數的名稱。

userdata…    可選。規定用戶自定義函數的參數。您可以向此函數傳遞任意多參數。

對數組中的每一個元素應用用戶自定義函數。在函數中,數組的鍵名和鍵值是參數。您能夠經過把用戶自定義函數中的第一個參數指定爲引用:&$value,來改變數組元素的值。如需操做更深的數組(一個數組中包含另外一個數組),請使用array_walk_recursive() 函數。

array_walk() 函數對數組中的每一個元素應用回調函數。若是成功則返回 TRUE,不然返回 FALSE。

典型狀況下 myfunction 接受兩個參數。array 參數的值做爲第一個,鍵名做爲第二個。若是提供了可選參數 userdata ,將被做爲第三個參數傳遞給回調函數。

若是 myfunction 函數須要的參數比給出的多,則每次 array_walk() 調用 myfunction 時都會產生一個 E_WARNING 級的錯誤。這些警告能夠經過在 array_walk() 調用前加上 PHP 的錯誤操做符 @ 來抑制,或者用 error_reporting()。

註釋:若是回調函數須要直接做用於數組中的值,能夠將回調函數的第一個參數指定爲引用:&$value。

註釋:將鍵名和 userdata 傳遞到 myfunction 中是 PHP 4.0 新增長的。

function myfunction($value,$key)
{
echo "The key $key has the value $value ";
}
$a=array("a"=>"red","b"=>"green","c"=>"blue");
array_walk($a,"myfunction");
//The key a has the value red The key b has the value green The key c has the value blue

function myfunction($value,$key,$p)
{
echo "$key $p $value<br>";
}
$a=array("a"=>"red","b"=>"green","c"=>"blue");
array_walk($a,"myfunction","has the value");
//a has the value red b has the value green c has the value blue

function myfunction(&$value,$key)
{
$value="yellow";
}
$a=array("a"=>"red","b"=>"green","c"=>"blue");
array_walk($a,"myfunction");
print_r($a);
//Array ( [a] => yellow [b] => yellow [c] => yellow )

array_walk_recursive(array,myfunction,parameter...)   

array    必需。規定數組。 myfunction 必需。用戶自定義函數的名稱。

userdata…    可選。規定用戶自定義函數的參數。您可以向此函數傳遞任意多參數。

對數組中的每一個元素應用用戶自定義函數。在函數中,數組的鍵名和鍵值是參數。

該函數與 array_walk() 函數的不一樣在於能夠操做更深的數組(一個數組中包含另外一個數組)。

array_walk_recursive() 函數對數組中的每一個元素應用回調函數。不同的是,若是原數組中的元素也是數組,就會遞歸地調用回調函數,也就是說,會遞歸到更深層的數組中去。

典型狀況下,myfunction 接受兩個參數。array 參數的值做爲第一個,鍵名做爲第二個。若是提供了可選參數 userdata ,將被做爲第三個參數傳遞給回調函數。

若是回調函數須要直接做用於數組中的值,能夠將回調函數的第一個參數指定爲引用,這樣對這些單元的任何改變也將會改變原始數組自己。

function myfunction($value,$key)
{
echo "鍵 $key 的值是 $value 。<br>";
}
$a1=array("a"=>"red","b"=>"green");
$a2=array($a1,"1"=>"blue","2"=>"yellow");
array_walk_recursive($a2,"myfunction");
//鍵 a 的值是 red 。 鍵 b 的值是 green 。 鍵 1 的值是 blue 。 鍵 2 的值是 yellow 。

比較數組,返回差集

array_diff(array1,array2,array3...)     (只比較鍵值。在返回的數組中鍵名保持不變。)

array_diff_assoc(array1,array2,array3...)      (比較鍵名和鍵值)

array_diff_key(array1,array2,array3...)     (只比較鍵名)

array_diff_uassoc(array1,array2,array3...,myfunction)    (比較鍵名和鍵值,使用用戶自定義的鍵名比較函數。返回的數組中鍵名保持不變)

array_diff_ukey(array1,array2,array3...,myfunction)   (只比較鍵名,使用用戶自定義的鍵名比較函數)

array_udiff(array1,array2,array3...,myfunction)       (只比較值,使用一個用戶自定義的鍵名比較函數)

array_udiff_assoc(array1,array2,array3...,myfunction)    (比較鍵和值,使用內建函數比較鍵名,使用用戶自定義函數比較鍵值)

array_udiff_uassoc(array1,array2,array3...,myfunction_key,myfunction_value)        (比較鍵和值,使用兩個用戶自定義的鍵名比較函數)

array1    必需。與其餘數組進行比較的第一個數組。

array2    必需。與第一個數組進行比較的數組。

array3    可選。與第一個數組進行比較的其餘數組。

myfunction     必需。定義可調用比較函數的字符串。若是第一個參數小於、等於或大於第二個參數,則該比較函數必須返回小於、等於或大於 0 的整數。

//array_diff(array1,array2,array3...)     (只比較鍵值。在返回的數組中,鍵名保持不變。)
$a1=array("a"=>"red","b"=>"green","c"=>"blue","d"=>"yellow");
$a2=array("e"=>"red","f"=>"green","g"=>"blue");
$result=array_diff($a1,$a2);
print_r($result);
//Array ( [d] => yellow )

$a1=array("a"=>"red","b"=>"green","c"=>"blue","d"=>"yellow");
$a2=array("e"=>"red","f"=>"black","g"=>"purple");
$a3=array("a"=>"red","b"=>"black","h"=>"yellow");
$result=array_diff($a1,$a2,$a3);
print_r($result);
//Array ( [b] => green [c] => blue )

//array_diff_assoc(array1,array2,array3...)      (比較鍵名和鍵值)
$a1=array("a"=>"red","b"=>"green","c"=>"blue","d"=>"yellow");
$a2=array("a"=>"red","b"=>"green","c"=>"blue");
$result=array_diff_assoc($a1,$a2);
print_r($result);
//Array ( [d] => yellow )

$a1=array("a"=>"red","b"=>"green","c"=>"blue","d"=>"yellow");
$a2=array("e"=>"red","f"=>"green","g"=>"blue");
$result=array_diff_assoc($a1,$a2);
print_r($result);
//Array ( [a] => red [b] => green [c] => blue [d] => yellow )

$a1=array("a"=>"red","b"=>"green","c"=>"blue","d"=>"yellow");
$a2=array("a"=>"red","f"=>"green","g"=>"blue");
$a3=array("h"=>"red","b"=>"green","g"=>"blue");
$result=array_diff_assoc($a1,$a2,$a3);
print_r($result);
//Array ( [c] => blue [d] => yellow )

//array_diff_key(array1,array2,array3...)     (只比較鍵名)
$a1=array("a"=>"red","b"=>"green","c"=>"blue");
$a2=array("a"=>"red","c"=>"blue","d"=>"pink");
$result=array_diff_key($a1,$a2);
print_r($result);
//Array ( [b] => green )

$a1=array("a"=>"red","b"=>"green","c"=>"blue");
$a2=array("c"=>"yellow","d"=>"black","e"=>"brown");
$a3=array("f"=>"green","c"=>"purple","g"=>"red");
$result=array_diff_key($a1,$a2,$a3);
print_r($result);
//Array ( [a] => red [b] => green )

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);
//Array ( [a] => red [c] => blue )

//array_diff_uassoc(array1,array2,array3...,myfunction)    (比較鍵名和鍵值,使用用戶自定義的鍵名比較函數)
function myfunction($a,$b)
{
if ($a===$b)
  {
  return 0;
  }
  return ($a>$b)?1:-1;
}
$a1=array("a"=>"red","b"=>"green","c"=>"blue");
$a2=array("a"=>"red","b"=>"green","d"=>"blue");
$a3=array("e"=>"yellow","a"=>"red","d"=>"blue");
$result=array_diff_uassoc($a1,$a2,$a3,"myfunction");
print_r($result);
//Array ( [c] => blue )

//array_diff_ukey(array1,array2,array3...,myfunction)   (只比較鍵名,使用用戶自定義的鍵名比較函數)
function myfunction($a,$b)
{
if ($a===$b)
  {
  return 0;
  }
  return ($a>$b)?1:-1;
}
$a1=array("a"=>"red","b"=>"green","c"=>"blue");
$a2=array("a"=>"blue","b"=>"black","e"=>"blue");
$result=array_diff_ukey($a1,$a2,"myfunction");
print_r($result);
//Array ( [c] => blue )

function myfunction($a,$b)
{
if ($a===$b)
  {
  return 0;
  }
  return ($a>$b)?1:-1;
}
$a1=array("a"=>"red","b"=>"green","c"=>"blue");
$a2=array("a"=>"black","b"=>"yellow","d"=>"brown");
$a3=array("e"=>"purple","f"=>"white","a"=>"gold");
$result=array_diff_ukey($a1,$a2,$a3,"myfunction");
print_r($result);
//Array ( [c] => blue )

//array_udiff(array1,array2,array3...,myfunction)       (只比較值,使用一個用戶自定義的鍵名比較函數)
function myfunction($a,$b)
{
if ($a===$b)
  {
  return 0;
  }
  return ($a>$b)?1:-1;
}
$a1=array("a"=>"red","b"=>"green","c"=>"blue");
$a2=array("a"=>"blue","b"=>"black","e"=>"blue");
$result=array_udiff($a1,$a2,"myfunction");
print_r($result);
//Array ( [a] => red [b] => green )

//array_udiff_assoc(array1,array2,array3...,myfunction)    (比較鍵和值,使用內建函數比較鍵名,使用用戶自定義函數比較鍵值)
function myfunction($a,$b)
{
if ($a===$b)
  {
  return 0;
  }
  return ($a>$b)?1:-1;
}
$a1=array("a"=>"red","b"=>"green","c"=>"blue");
$a2=array("a"=>"red","b"=>"blue","c"=>"green");
$result=array_udiff_assoc($a1,$a2,"myfunction");
print_r($result);
//Array ( [b] => green [c] => blue )

//array_udiff_uassoc(array1,array2,array3...,myfunction_key,myfunction_value)        (比較鍵和值,使用兩個用戶自定義的鍵名比較函數)
function myfunction_key($a,$b)
{
if ($a===$b)
  {
  return 0;
  }
  return ($a>$b)?1:-1;
}
function myfunction_value($a,$b)
{
if ($a===$b)
  {
  return 0;
  }
  return ($a>$b)?1:-1;
}
$a1=array("a"=>"red","b"=>"green","c"=>"blue");
$a2=array("a"=>"red","b"=>"green","c"=>"green");
$result=array_udiff_uassoc($a1,$a2,"myfunction_key","myfunction_value");
print_r($result);
//Array ( [c] => blue )

比較數組,返回交集

array_intersect(array1,array2,array3...)     (只比較鍵值)。

array_intersect_assoc(array1,array2,array3...)      (比較鍵名和鍵值)。

array_intersect_key(array1,array2,array3...)      (只比較鍵名)。

array_intersect_uassoc(array1,array2,array3...,myfunction)      (比較鍵名和鍵值,使用用戶自定義的鍵名比較函數)。

array_intersect_ukey(array1,array2,array3...,myfunction)   (只比較鍵名,使用用戶自定義的鍵名比較函數)。

array_uintersect(array1,array2,array3...,myfunction)    (只比較值,使用一個用戶自定義的鍵名比較函數)。

array_uintersect_assoc(array1,array2,array3...,myfunction)(比較鍵和值,使用內建函數比較鍵名,使用用戶自定義函數比較鍵值)。

array_uintersect_uassoc(array1,array2,array3...,myfunction_key,myfunction_value)(比較鍵和值,使用兩個用戶自定義的鍵名比較函數)。

array1    必需。與其餘數組進行比較的第一個數組。

array2    必需。與第一個數組進行比較的數組。

array3    可選。與第一個數組進行比較的其餘數組。

myfunction     必需。定義可調用比較函數的字符串。若是第一個參數小於、等於或大於第二個參數,則該比較函數必須返回小於、等於或大於 0 的整數。

#array_intersect(array1,array2,array3...)     (只比較鍵值)。
$a1=array("a"=>"red","b"=>"green","c"=>"blue","d"=>"yellow");
$a2=array("e"=>"red","f"=>"green","g"=>"blue");
$result=array_intersect($a1,$a2);
print_r($result);
//Array ( [a] => red [b] => green [c] => blue )

$a1=array("a"=>"red","b"=>"green","c"=>"blue","d"=>"yellow");
$a2=array("e"=>"red","f"=>"black","g"=>"purple");
$a3=array("a"=>"red","b"=>"black","h"=>"yellow");
$result=array_intersect($a1,$a2,$a3);
print_r($result);
//Array ( [a] => red )

#array_intersect_assoc(array1,array2,array3...)      (比較鍵名和鍵值)。
$a1=array("a"=>"red","b"=>"green","c"=>"blue","d"=>"yellow");
$a2=array("a"=>"red","b"=>"green","g"=>"blue");
$a3=array("a"=>"red","b"=>"green","g"=>"blue");
$result=array_intersect_assoc($a1,$a2,$a3);
print_r($result);
//Array ( [a] => red [b] => green )

#array_intersect_key(array1,array2,array3...)      (只比較鍵名)。
$a1=array("a"=>"red","b"=>"green","c"=>"blue");
$a2=array("c"=>"yellow","d"=>"black","e"=>"brown");
$a3=array("f"=>"green","c"=>"purple","g"=>"red");
$result=array_intersect_key($a1,$a2,$a3);
print_r($result);
//Array ( [c] => blue )


#array_intersect_uassoc(array1,array2,array3...,myfunction)      (比較鍵名和鍵值,使用用戶自定義的鍵名比較函數)。
function myfunction($a,$b)
{
if ($a===$b)
  {
  return 0;
  }
  return ($a>$b)?1:-1;
}
$a1=array("a"=>"red","b"=>"green","c"=>"blue");
$a2=array("a"=>"red","b"=>"green","d"=>"blue");
$a3=array("e"=>"yellow","a"=>"red","d"=>"blue");
$result=array_intersect_uassoc($a1,$a2,$a3,"myfunction");
print_r($result);
//Array ( [a] => red )

#array_intersect_ukey(array1,array2,array3...,myfunction)   (只比較鍵名,使用用戶自定義的鍵名比較函數)。
function myfunction($a,$b)
{
if ($a===$b)
  {
  return 0;
  }
  return ($a>$b)?1:-1;
}
$a1=array("a"=>"red","b"=>"green","c"=>"blue");
$a2=array("a"=>"black","b"=>"yellow","d"=>"brown");
$a3=array("e"=>"purple","f"=>"white","a"=>"gold");
$result=array_intersect_ukey($a1,$a2,$a3,"myfunction");
print_r($result);
//Array ( [a] => red )


#array_uintersect(array1,array2,array3...,myfunction)    (只比較值,使用一個用戶自定義的鍵名比較函數)。
function myfunction($a,$b)
{
if ($a===$b)
  {
  return 0;
  }
  return ($a>$b)?1:-1;
}
$a1=array("a"=>"red","b"=>"green","c"=>"blue","yellow");
$a2=array("A"=>"red","b"=>"GREEN","yellow","black");
$a3=array("a"=>"green","b"=>"red","yellow","black");
$result=array_uintersect($a1,$a2,$a3,"myfunction");
print_r($result);
//Array ( [a] => red [0] => yellow )

#array_uintersect_assoc(array1,array2,array3...,myfunction)(比較鍵和值,使用內建函數比較鍵名,使用用戶自定義函數比較鍵值)。
function myfunction($a,$b)
{
if ($a===$b)
  {
  return 0;
  }
  return ($a>$b)?1:-1;
}
$a1=array("a"=>"red","b"=>"green","c"=>"blue");
$a2=array("a"=>"red","b"=>"blue","c"=>"green");
$result=array_uintersect_assoc($a1,$a2,"myfunction");
print_r($result);
//Array ( [a] => red )

#array_uintersect_uassoc(array1,array2,array3...,myfunction_key,myfunction_value)(比較鍵和值,使用兩個用戶自定義的鍵名比較函數)。
function myfunction_key($a,$b)
{
if ($a===$b)
  {
  return 0;
  }
  return ($a>$b)?1:-1;
}
function myfunction_value($a,$b)
{
if ($a===$b)
  {
  return 0;
  }
  return ($a>$b)?1:-1;
}
$a1=array("a"=>"red","b"=>"green","c"=>"blue");
$a2=array("a"=>"red","b"=>"green","c"=>"green");
$result=array_uintersect_uassoc($a1,$a2,"myfunction_key","myfunction_value");
print_r($result);
//Array ( [a] => red [b] => green )

數組排序

sort(array,sortingtype)    對索引數組進行升序排序。 本函數爲數組中的單元賦予新的鍵名。原有的鍵名將被刪除。

rsort(array,sortingtype)    對數值數組進行降序排序。該函數爲 array 中的單元賦予新的鍵名。這將刪除原有的鍵名而不只是從新排序。

asort(array,sortingtype)    對關聯數組按照鍵值進行升序排序。保持索引關係。(鍵,值沿用之前的)

arsort(array,sortingtype)    對關聯數組按照鍵值進行降序排序。保持索引關係。(鍵,值沿用之前的)

ksort(array,sortingtype)    對數組按照鍵名排序。爲數組值保留原來的鍵。(升序)

krsort(array,sortingtype)    對數組按照鍵名逆向排序。爲數組值保留原來的鍵。(降序)

natsort(array)    用「天然排序」算法對數組排序。(升序。鍵值保留它們原始的鍵名。)

natcasesort(array)    用「天然排序」算法對數組進行不區分大小寫字母的排序。(鍵值保留它們原始的鍵名。)

usort(array,myfunction)  經過用戶自定義的比較函數對數組進行排序。若是兩個元素比較結果相同,則它們在排序後的數組中的順序未經定義。到 PHP 4.0.6 以前,用戶自定義函數將保留這些元素的原有順序。可是因爲在 4.1.0 中引進了新的排序算法,結果將不是這樣了,由於對此沒有一個有效的解決方案。本函數爲 array 中的元素賦予新的鍵名。這會刪除原有的鍵名。

uasort(array,myfunction)   使用用戶自定義的比較函數對數組排序。保持索引關聯(不爲元素分配新的鍵)

uksort(array,myfunction)     使用用戶自定義的比較函數對數組中的鍵名進行排序。

array    必需。規定要進行排序的數組。

sortingtype    可選。規定如何排列數組的元素/項目。可能的值:

0=SORT_REGULAR - 默認。把每一項按常規順序排列(Standard ASCII,不改變類型)

1 = SORT_NUMERIC - 把每一項做爲數字來處理。

2 = SORT_STRING - 把每一項做爲字符串來處理。

3 = SORT_LOCALE_STRING - 把每一項做爲字符串來處理,基於當前區域設置(可經過 setlocale() 進行更改)。在 PHP 6 以前,使用了系統的區域設置,能夠用 setlocale() 來改變。自 PHP 6 起,必須用 i18n_loc_set_default() 函數。

4 = SORT_NATURAL - 把每一項做爲字符串來處理,使用相似 natsort() 的天然排序。

5 = SORT_FLAG_CASE - 能夠結合(按位或)SORT_STRING 或 SORT_NATURAL 對字符串進行排序,不區分大小寫。

myfunction    可選。定義可調用比較函數的字符串。若是第一個參數小於等於或大於第二個參數,那麼比較函數必須返回一個小於等於或大於 0 的整數。

若是成功則返回 TRUE,不然返回 FALSE。

天然排序,即數字從 1 到 9 的排序方法,字母從 a 到 z 的排序方法,短者優先。數組的索引與單元值保持關聯。

$cars=array("Volvo","BMW","Toyota");
sort($cars);
//BMW Toyota Volvo

$numbers=array(4,6,2,22,11);
rsort($numbers);
//22 11 6 4 2

$age=array("Bill"=>"60","Steve"=>"56","Mark"=>"31");
arsort($age);
foreach($age as $x=>$x_value)
    {
    echo "Key=" . $x . ", Value=" . $x_value;
    echo "<br>";
    }
//Key=Bill, Value=60 Key=Steve, Value=56 Key=Mark, Value=31

$age=array("Bill"=>"60","Steve"=>"56","Mark"=>"31");
asort($age);
foreach($age as $x=>$x_value)
    {
    echo "Key=" . $x . ", Value=" . $x_value;
    echo "<br>";
    }
//Key=Mark, Value=31 Key=Steve, Value=56 Key=Bill, Value=60

$age=array("Bill"=>"60","Steve"=>"56","mark"=>"31");
krsort($age);
foreach($age as $x=>$x_value)
    {
    echo "Key=" . $x . ", Value=" . $x_value;
    echo "<br>";
    }
//Key=mark, Value=31 Key=Steve, Value=56 Key=Bill, Value=60

$age=array("Bill"=>"60","Steve"=>"56","mark"=>"31");
ksort($age);
foreach($age as $x=>$x_value)
    {
    echo "Key=" . $x . ", Value=" . $x_value;
    echo "<br>";
    }
//Key=Bill, Value=60 Key=Steve, Value=56 Key=mark, Value=31

$temp_files = array("temp15.txt","temp10.txt","temp1.txt","temp22.txt","temp2.txt");
sort($temp_files);
echo "標準排序:";
print_r($temp_files);
echo "<br>";
natsort($temp_files);
echo "天然排序:";
print_r($temp_files);
//標準排序:Array ( [0] => temp1.txt [1] => temp10.txt [2] => temp15.txt [3] => temp2.txt [4] => temp22.txt ) 
//天然排序:Array ( [0] => temp1.txt [3] => temp2.txt [1] => temp10.txt [2] => temp15.txt [4] => temp22.txt )

$temp_files = array("temp15.txt","Temp10.txt",
"temp1.txt","Temp22.txt","temp2.txt");
natsort($temp_files);
echo "天然排序:";
print_r($temp_files);
echo "<br />";
natcasesort($temp_files);
echo "不區分大小寫的天然排序:";
print_r($temp_files);
//天然排序:Array([0] => Temp10.txt [1] => Temp22.txt [2] => temp1.txt [4] => temp2.txt [3] => temp15.txt)
//不區分大小寫的天然順序:Array([2] => temp1.txt [4] => temp2.txt [0] => Temp10.txt [3] => temp15.txt [1] => Temp22.txt)

function my_sort($a,$b)
{
if ($a==$b) return 0;
   return ($a<$b)?-1:1;
}
$a=array(4,2,8,6);
usort($a,"my_sort");
$arrlength=count($a);
for($x=0;$x<$arrlength;$x++)
   {
   echo $a[$x];
   echo "<br>";
   }
//2 4 6 8

function my_sort($a,$b)
{
if ($a==$b) return 0;
return ($a<$b)?-1:1;
}
$arr=array("a"=>4,"b"=>2,"c"=>8,d=>"6");
uasort($arr,"my_sort");
foreach($arr as $x=>$x_value)
    {
    echo "Key=" . $x . ", Value=" . $x_value;
    echo "<br>";
    }
//Key=b, Value=2 Key=a, Value=4 Key=d, Value=6 Key=c, Value=8

function my_sort($a,$b)
{
if ($a==$b) return 0;
return ($a<$b)?-1:1;
}
$arr=array("a"=>4,"b"=>2,"c"=>8,d=>"6");
uksort($arr,"my_sort");
foreach($arr as $x=>$x_value)
    {
    echo "Key=" . $x . ", Value=" . $x_value;
    echo "<br>";
    }
//Key=a, Value=4 Key=b, Value=2 Key=c, Value=8 Key=d, Value=6

數組指針移動

current(array)   返回數組中的當前元素的值。該函數不會移動數組內部指針。

pos(array)    current() 的別名。

each(array)   返回當前元素的鍵名和鍵值,並將內部指針向前移動。該元素的鍵名和鍵值會被返回帶有四個元素的數組中。兩個元素(1 和 Value)包含鍵值,兩個元素(0 和 Key)包含鍵名。

prev(array)    將內部指針指向數組中的上一個元素,並輸出。若是數組包含空的單元,或者單元的值是 0 則該函數碰到這些單元也返回 FALSE。要正確遍歷可能含有空單元或者單元值爲 0 的數組,請參見 each() 函數。

next(array)    將內部指針指向數組中的下一個元素,並輸出。若是移動指針的結果超出了數組單元的末端,則 next() 返回 FALSE。

reset(array)    將內部指針指向數組中的第一個元素,並輸出。

end(array)    將數組內部指針指向最後一個元素,並返回該元素的值(若是成功)。

array    必需。規定要進行排序的數組。

每一個數組中都有一個內部的指針指向它的"當前"元素,初始指向插入到數組中的第一個元素。

key(array)    返回數組內部指針當前指向元素的鍵名。該函數與 current() 相似,只是返回的結果不一樣。current() 函數返回的是元素的值,而 key() 函數返回的是元素的鍵名。   

$people = array("Bill", "Steve", "Mark", "David");
echo "鍵的當前位置是:" . key($people)
//鍵的當前位置是:0

$people = array("Bill", "Steve", "Mark", "David");
echo current($people) . "<br>"; // 當前元素是 Bill
echo next($people) . "<br>"; // Bill 的下一個元素是 Steve
echo current($people) . "<br>"; // 如今當前元素是 Steve
echo prev($people) . "<br>"; // Steve 的上一個元素是 Bill
echo end($people) . "<br>"; // 最後一個元素是 David
echo prev($people) . "<br>"; // David 以前的元素是 Mark
echo current($people) . "<br>"; // 目前的當前元素是 Mark
echo reset($people) . "<br>"; // 把內部指針移動到數組的首個元素,即 Bill
echo next($people) . "<br>"; // Bill 的下一個元素是 Steve
print_r (each($people)); // 返回當前元素的鍵名和鍵值(目前是 Steve),並向前移動內部指針
//Bill Steve Steve Bill David Mark Mark Bill Steve
//Array ( [1] => Steve [value] => Steve [0] => 1 [key] => 1 )
相關文章
相關標籤/搜索