1. 程式人生 > >php陣列操作大全

php陣列操作大全

一、陣列操作的基本函式
陣列的鍵名和值
array_values($arr);獲得陣列的值
array_keys($arr);獲得陣列的鍵名
array_flip($arr);陣列中的值與鍵名互換(如果有重複前面的會被後面的覆蓋)
in_array("apple",$arr);在陣列中檢索apple
array_search("apple",$arr);在陣列中檢索apple ,如果存在返回鍵名
array_key_exists("apple",$arr);檢索給定的鍵名是否存在陣列中
isset($arr[apple]):檢索給定的鍵名是否存在陣列中

陣列的內部指標
current($arr);返回陣列中的當前單元

pos($arr);返回陣列中的當前單元
key($arr);返回陣列中當前單元的鍵名
prev($arr);將陣列中的內部指標倒回一位
next($arr);將陣列中的內部指標向前移動一位
end($arr);將陣列中的內部指標指向最後一個單元
reset($arr;將陣列中的內部指標指向第一個單元
each($arr);將返回陣列當前元素的一個鍵名/值的構造陣列,並使陣列指標向前移動一位
list($key,$value)=each($arr);獲得陣列當前元素的鍵名和值

陣列和變數之間的轉換
extract($arr);用於把陣列中的元素轉換成變數匯入到當前檔案中,鍵名當作變數名,值作為變數值
注:(第二個引數很重要,可以看手冊使用)使用方法  echo $a;

compact(var1,var2,var3);用給定的變數名建立一個數組

二、陣列的分段和填充
陣列的分段
array_slice($arr,0,3);可以將陣列中的一段取出,此函式忽略鍵名
array_splice($arr,0,3,array("black","maroon"));可以將陣列中的一段取出,與上個函式不同在於返回的序列從原陣列中刪除

分割多個數組
array_chunk($arr,3,TRUE);可以將一個數組分割成多個,TRUE為保留原陣列的鍵名

陣列的填充
array_pad($arr,5,'x');將一個數組填補到制定長度

三、陣列與棧
array_push($arr,"apple","pear");將一個或多個元素壓入陣列棧的末尾(入棧),返回入棧元素的個數

array_pop($arr);將陣列棧的最後一個元素彈出(出棧)

四、陣列與列隊
array_shift($arr);陣列中的第一個元素移出並作為結果返回(陣列長度減1,其他元素向前移動一位,數字鍵名改為從零技術,文字鍵名不變)
array_unshift($arr,"a",array(1,2));在陣列的開頭插入一個或多個元素

五、回撥函式
array_walk($arr,'function','words');使用使用者函式對陣列中的每個成員進行處理(第三個引數傳遞給回撥函式function)
array_mpa("function",$arr1,$arr2);可以處理多個數組(當使用兩個或更多陣列時,他們的長度應該相同)
array_filter($arr,"function");使用回撥函式過濾陣列中的每個元素,如果回撥函式為TRUE,陣列的當前元素會被包含在返回的結果陣列中,陣列的鍵名保留不變
array_reduce($arr,"function","*");轉化為單值函式(*為陣列的第一個值)

六、陣列的排序
通過元素值對陣列排序
sort($arr);由小到大的順序排序(第二個引數為按什麼方式排序)忽略鍵名的陣列排序
rsort($arr);由大到小的順序排序(第二個引數為按什麼方式排序)忽略鍵名的陣列排序
usort($arr,"function");使用使用者自定義的比較函式對陣列中的值進行排序(function中有兩個引數,0表示相等,正數表示第一個大於第二個,負數表示第一個小於第二個)忽略鍵名的陣列排序
asort($arr);由小到大的順序排序(第二個引數為按什麼方式排序)保留鍵名的陣列排序
arsort($arr);由大到小的順序排序(第二個引數為按什麼方式排序)保留鍵名的陣列排序
uasort($arr,"function");使用使用者自定義的比較函式對陣列中的值進行排序(function中有兩個引數,0表示相等,正數表示第一個大於第二個,負數表示第一個小於第二個)保留鍵名的陣列排序

通過鍵名對陣列排序
ksort($arr);按照鍵名正序排序
krsort($arr);按照鍵名逆序排序
uksort($arr,"function");使用使用者自定義的比較函式對陣列中的鍵名進行排序(function中有兩個引數,0表示相等,正數表示第一個大於第二個,負數表示第一個小於第二個)

自然排序法排序
natsort($arr);自然排序(忽略鍵名)
natcasesort($arr);自然排序(忽略大小寫,忽略鍵名)

七、陣列的計算
陣列元素的求和
array_sum($arr);對陣列內部的所有元素做求和運算

陣列的合併
array_merge($arr1,$arr2);合併兩個或多個數組(相同的字串鍵名,後面的覆蓋前面的,相同的數字鍵名,後面的不會做覆蓋操作,而是附加到後面)
“+”$arr1+$arr2;對於相同的鍵名只保留後一個
array_merge_recursive($arr1,$arr2); 遞迴合併操作,如果陣列中有相同的字串鍵名,這些值將被合併到一個數組中去。如果一個值本身是一個數組,將按照相應的鍵名把它合併為另一個數組。當陣列 具有相同的陣列鍵名時,後一個值將不會覆蓋原來的值,而是附加到後面

陣列的差集
array_diff($arr1,$arr2);返回差集結果陣列
array_diff_assoc($arr1,$arr2,$arr3);返回差集結果陣列,鍵名也做比較

陣列的交集
array_intersect($arr1,$arr2);返回交集結果陣列
array_intersect_assoc($arr1,$arr2);返回交集結果陣列,鍵名也做比較

八、其他的陣列函式
range(0,12);建立一個包含指定範圍單元的陣列
array_unique($arr);移除陣列中重複的值,新的陣列中會保留原始的鍵名
array_reverse($arr,TRUE);返回一個單元順序與原陣列相反的陣列,如果第二個引數為TRUE保留原來的鍵名
//srand((float)microtime()*10000000); 隨機種子觸發器
array_rand($arr,2);從陣列中隨機取出一個或 多個元素
shuffle($arr);將陣列的順序打亂
本類函式允許用多種方法來運算元組和與之互動。陣列的本質是儲存,管理和操作一組變數。
PHP 支援一維和多維陣列,可以是使用者建立或由另一個函式建立。有一些特定的資料庫處理函式可以從資料庫查詢中生成陣列,還有一些函式返回陣列。

array_change_key_case — 返回字串鍵名全為小寫或大寫的陣列
array_chunk — 將一個數組分割成多個
array_combine — 建立一個數組,用一個數組的值作為其鍵名,另一個數組的值作為其值
array_count_values — 統計陣列中所有的值出現的次數
array_diff_assoc — 帶索引檢查計算陣列的差集
array_diff_key — 使用鍵名比較計算陣列的差集
array_diff_uassoc — 用使用者提供的回撥函式做索引檢查來計算陣列的差集
array_diff_ukey — 用回撥函式對鍵名比較計算陣列的差集
array_diff — 計算陣列的差集
array_fill_keys — Fill an array with values, specifying keys
array_fill — 用給定的值填充陣列
array_filter — 用回撥函式過濾陣列中的單元
array_flip — 交換陣列中的鍵和值
array_intersect_assoc — 帶索引檢查計算陣列的交集
array_intersect_key — 使用鍵名比較計算陣列的交集
array_intersect_uassoc — 帶索引檢查計算陣列的交集,用回撥函式比較索引
array_intersect_ukey — 用回撥函式比較鍵名來計算陣列的交集
array_intersect — 計算陣列的交集
array_key_exists — 檢查給定的鍵名或索引是否存在於陣列中
array_keys — 返回陣列中所有的鍵名
array_map — 將回調函式作用到給定陣列的單元上
array_merge_recursive — 遞迴地合併一個或多個數組
array_merge — 合併一個或多個數組
array_multisort — 對多個數組或多維陣列進行排序
array_pad — 用值將陣列填補到指定長度
array_pop — 將陣列最後一個單元彈出(出棧)
array_product — 計算陣列中所有值的乘積
array_push — 將一個或多個單元壓入陣列的末尾(入棧)
array_rand — 從陣列中隨機取出一個或多個單元
array_reduce — 用回撥函式迭代地將陣列簡化為單一的值
array_reverse — 返回一個單元順序相反的陣列
array_search — 在陣列中搜索給定的值,如果成功則返回相應的鍵名
array_shift — 將陣列開頭的單元移出陣列
array_slice — 從陣列中取出一段
array_splice — 把陣列中的一部分去掉並用其它值取代
array_sum — 計算陣列中所有值的和
array_udiff_assoc — 帶索引檢查計算陣列的差集,用回撥函式比較資料
array_udiff_uassoc — 帶索引檢查計算陣列的差集,用回撥函式比較資料和索引
array_udiff — 用回撥函式比較資料來計算陣列的差集
array_uintersect_assoc — 帶索引檢查計算陣列的交集,用回撥函式比較資料
array_uintersect_uassoc — 帶索引檢查計算陣列的交集,用回撥函式比較資料和索引
array_uintersect — 計算陣列的交集,用回撥函式比較資料
array_unique — 移除陣列中重複的值
array_unshift — 在陣列開頭插入一個或多個單元
array_values — 返回陣列中所有的值
array_walk_recursive — 對陣列中的每個成員遞迴地應用使用者函式
array_walk — 對陣列中的每個成員應用使用者函式
array — 新建一個數組
arsort — 對陣列進行逆向排序並保持索引關係
asort — 對陣列進行排序並保持索引關係
compact — 建立一個數組,包括變數名和它們的值
count — 計算陣列中的單元數目或物件中的屬性個數
current — 返回陣列中的當前單元
each — 返回陣列中當前的鍵/值對並將陣列指標向前移動一步
end — 將陣列的內部指標指向最後一個單元
extract — 從陣列中將變數匯入到當前的符號表
in_array — 檢查陣列中是否存在某個值
key — 從關聯陣列中取得鍵名
krsort — 對陣列按照鍵名逆向排序
ksort — 對陣列按照鍵名排序
list — 把陣列中的值賦給一些變數
natcasesort — 用“自然排序”演算法對陣列進行不區分大小寫字母的排序
natsort — 用“自然排序”演算法對陣列排序
next — 將陣列中的內部指標向前移動一位
pos — current() 的別名
prev — 將陣列的內部指標倒回一位
range — 建立一個包含指定範圍單元的陣列
reset — 將陣列的內部指標指向第一個單元
rsort — 對陣列逆向排序
shuffle — 將陣列打亂
sizeof — count() 的別名
sort — 對陣列排序
uasort — 使用使用者自定義的比較函式對陣列中的值進行排序並保持索引關聯
uksort — 使用使用者自定義的比較函式對陣列中的鍵名進行排序
usort — 使用使用者自定義的比較函式對陣列中的值進行排序
使用陣列
在前面的章節中,我們所介紹的變數都是標量變數,這些變數只能儲存單個數據。陣列是一個可以儲存一組或一系列數值的變數。一個數組可以具有許多個元素。每個元素有一個值,例如文字、數字或另一個數組。一個包含其他陣列的陣列稱為多維陣列。

3.1 什麼是陣列
一個標量變數就是一個用來儲存數值的命名區域。同樣,一個數組就是一個用來儲存一系列變數值的命名區域,因此,可以使用陣列組織標量變數。
儲存在陣列中的值稱為陣列元素。每個陣列元素有一個相關的索引(也稱為關鍵字),它可以用來訪問元素。在大多數程式語言中,陣列都具有數字索引,而且這些索個通常是從0或1開始的。

3.2 數字索引陣列
在PHP中,數字索引的預設值是從0開始的,當然也可以改變它。

3.2.1 數字索引陣列的初始化
$porducts = array( 'Tires', 'Oil', 'Spark Plugs' );
就像echo語句一樣,array()實際上是一個語言結構,而不是一個函式。
根據對陣列內容的需求不同,可能不需要再像以上例子一樣對它們進行手工的初始化操作。如果所需資料儲存在另一個數組中,可以使用運算子“=”簡單地將陣列複製到另一個數組。
如果需要將按升序排列的數字儲存在一個數組中,可以使用range()函式自動建立這個陣列。如下這行程式碼將建立一個從1到10的數字陣列:$numbers = range(1,10);
range()函式具有一個可選的第三個引數,這個引數允許設定值之間的步驟。例如,如需建立一個1到10之間的奇數陣列,可以使用如下程式碼:$odds = range(1,10,2);
range()函式也可以對字元進行操作,如:$letters = range('a', 'z');

3.2.2 訪問陣列的內容
要訪問一個變數的內容,可以直接使用其名稱。如果該變數是一個數組,可以使用變數名稱和關鍵字或索引的組合來訪問其內容。關鍵字或索引將指定我們要訪問的變數。索引在變數名稱後面用方括號括起來。
在預設的情況下,0元素是陣列的第一個元素。
請注意,雖然PHP的字串解析功能非常強大和智慧,但是可能會引起混淆。當你將陣列或其他變數嵌入雙引號中的字串時,如果不能正確解釋它們,可以將它們放置在雙引號之外,或者查詢第4章的“字串操作與正則表示式”獲得更復雜的語法。
就像PHP的其他變數一樣,陣列不需要預先初始化或建立。在第一次使用它們的時候,它們會自動建立。

3.2.3. 使用迴圈訪問陣列
由於陣列使用有序的數字作為索引,所以使用一個for迴圈就可以很容易地顯示陣列的內容。
for ($i=0; $i<3; $i++)
echo "$products[$i]";
使用一個簡單的迴圈就可以訪問每個元素是數字索引陣列的一個非常好的特性。也可以使用foreach迴圈,這個迴圈語句是專門為陣列而設計的。如:
foreach ($products as $current)
echo $current. ' ';

3.3 使用不同索引的陣列
PHP還支援相關陣列。在相關陣列中,可以將每個變數值與任何關鍵字或索引關聯起來。

3.3.1 初始化相關陣列
如下所示的程式碼可以建立一個以產品名稱作為關鍵字、以價格作為值的相關陣列:
$prices = array( 'Tires'=>100, 'Oil'=>10, 'Spark Plugs'=>4 );
關鍵字和值之間的符號只是一個大於號與等於符號。

3.3.2 訪問陣列元素
同樣,可以使用變數名稱和關鍵字來訪問陣列的內容。例如$prices['Tires']。

3.3.3 使用迴圈語句
因為相關陣列的索引不是數字,因此無法在for迴圈語句中使用一個簡單的計數器對陣列進行操作。但是可以使用foreach迴圈或list()和each()結構。
當使用foreach迴圈語句對相關陣列進行操作時,foreach()迴圈具有不同的結構。可以按如下方式使用關鍵字:
foreach ($prices as $key => $value)
echo $key.'=>'.$value.'<br />';
如下所示的程式碼將使用each()結構列印$prices陣列的內容:
while( $element = each($prices))
{
echo $element['key'];
echo ' - ';
echo $element['value'];
echo '<br />';
}
each()函式將返回陣列的當前元素,並將下一個元素作為當前元素。因為在while迴圈中呼叫each()函式,它將按順序返回陣列中每個元素,並且當它到達陣列末尾時,迴圈操作將終止。
在 這段程式碼中,變數$element是一個數組。當呼叫each()時,它將返回一個帶有4個數值和4個指向陣列位置的索引的陣列。位置key和0包含了當 前元素的關鍵字,而位置value和1包含了當前元素的值。雖然這與選哪一種方法沒什麼不同,但我們選擇了使用命名位置,而不是數字索引位置。
此外,還有一種更為高階和常見的方式來完成相同的操作。函式list()可以用來將一個數組分解為一系列的值。可以按照如下方式將函式each()返回的兩個值分開:list( $product, $price) = each( $price);
以上程式碼使用each()從$prices陣列中取出當前元素,並且將它作為陣列返回,然後再指向下一個元素。它還使用list()將從each()返回的陣列中所包含0、1兩個元素變為兩個名為$product和$price的新蠻量。
我們可以迴圈遍歷整個$prices陣列,使用如下所示的簡短指令碼顯示它的內容:
while(list($prodct, $pirce) = each($prices))
echo "$product - $price<br />";
這段程式碼的輸出結果與前面指令碼的輸出結果相同,但它更容易閱讀,因為list()允許為新變數命名。
需要注意的一點是,當使用each()函式時,陣列將記錄當前元素。如果希望在相同的指令碼中兩次使用該陣列,就必須使用函式reset()將當前元素重新設定到陣列開始處。要再次遍歷prices陣列,可以使用如下所示的程式碼:
reset($prices);
while(list($product, $price) = each($prices))
echo "$product - $price<br />";

3.4 陣列操作符
+聯合,==等價,===恆等,!=不等價,<>不等價,!==不恆等。
聯合操作符嘗試將$b中的元素新增到$a的末尾。如果$b中的元素與$a中的一些元素具有相同的索引,它們將不會被新增。即$a中的元素將不會被覆蓋。

3.5 多維陣列
陣列不一定就是一個關鍵字和值的簡單列表——陣列中的每個位置還可以儲存另一個數組。使用這種方法,可以建立一個二維陣列。可以把二維陣列當成一個矩陣,或者是一個具有寬度和高度或者行和列的網路。

3.6 陣列排序

3.6.1 使用sort()函式
sort()函式是區分字母大小寫的。所有的大家字母都在小寫字母的前面。所以‘A’小於‘Z’,而'Z'小於‘a’。
該 函式的第二個引數是可選的。這個可選引數可以傳遞SORT_REGULAR(預設值)、SORT_NUMERIC或SORT_STRING。指定排序型別 的功能是非常有用的,例如,當要比較可能包含有數字2和12的字串時。從數學角度看,2要小於12,但是作為字串,‘12’卻要小於‘2’。

3.6.2 使用asort()函式和ksort()函式對相關陣列排序
函式asort()根據陣列的每個元素值進行排序。ksort()函式是按關鍵字排序而不是按值排序。

3.6.3 反向排序
函式rsort()將一個一維數字索引陣列按降序排序。函式arsort()將一個一維相關陣列按每個元素值的降序排序。函式krsort()針根據陣列元素的關鍵字將一維陣列按照降序排序。
為了訪問一個一維陣列中的資料,需要使用陣列的名稱和元素的索引,除了一個元素具有兩個索引——行和列外,二維陣列和一維陣列是類似的。
可以使用雙重for迴圈來實現同樣的效果:
for ( $row=0; $row<3; $row++ )
{
for ( $column=0; $column<3; $column++ )
{
echo '|'.$products[$row][$column];
|
echo '|<br />';
}
如果對一個大陣列使用這種程式碼,那麼將簡潔得多。
你可能更喜歡建立列名稱來代替數字。可以使用如下程式碼:
$products = array ( array ( 'Code'=>'TIR', 'Descrīption'=>'Tires', 'Price'=>100 ), array ( 'Code'=>'OIL', 'Descrīption'=>'Oil', 'Price'=>10 ), array ( 'Code'=>'SPK', 'Descrīption'=>'Spark Plugs', 'Price'=>4 ) };

相關推薦

php陣列操作大全

一、陣列操作的基本函式陣列的鍵名和值array_values($arr);獲得陣列的值array_keys($arr);獲得陣列的鍵名array_flip($arr);陣列中的值與鍵名互換(如果有重複前面的會被後面的覆蓋)in_array("apple",$arr);在陣列中檢索applearray_sear

常用php陣列操作

/** * 陣列層級縮排轉換 * @param array $array 源陣列 * @param int $pid * @param int $level * @return array */ function Array2level($array, $pid = 0, $

js陣列操作大全(pop,push,unshift,splice,shift方法)

他們改變的都是原有的那個陣列的長度和內容,如果在外面定一個新元素接收他的變化,那麼這個元素只能是獲取到他處理之後的長度。 pop  最後刪除 var a = [1,2,3,4,5]; var b = a.pop();    //a:[1,2,3,4] b:5

php陣列操作方法

一、陣列操作的基本函式 陣列的鍵名和值 array_values($arr);獲得陣列的值 array_keys($arr);獲得陣列的鍵名 array_flip($arr);陣列中的值與鍵名互換(如果有重複前面的會被後面的覆蓋) in_array("apple

PHP 陣列操作常用函式

array_push(); array_reverse() php 陣列順序反轉 array array_reverse ( array $array [, bool $preserve_keys = false ] ) array_reverse(

php擴充套件開發-陣列操作

//add_assoc_*系列函式,生成字元索引: add_assoc_null(zval *aval, char *key); add_assoc_bool(zval *aval, char *key, zend_bool bval); add_assoc_long(zval *ava

PHP陣列操作

list()函式遍歷陣列 array list( mixed $var1 [, mixed $...] ) list()函式僅能用於數字索引的陣列,且數字索引從0開始 統計陣列元素個數 count()函式對陣列中的元素個數進行統計 int count(mixed arra

PHP陣列的幾個操作,求並集,交集,差集,陣列與字串的相互轉換及陣列去重

在php中如果我想要對兩個陣列進行如並集、交集和差集操作,我們可直接使用php自帶的函式來操作如array_merge(),array_intersect(),array_diff(). 計算陣列的合併 array_merge與“+”的區別 array_merge() 函式

php 常用陣列操作整理

概述要訪問一個變數的內容,可以直接使用其名稱。如果該變數是一個數組,可以使用變數名稱和關鍵字或索引的組合來訪問其內容。 像其他變數一樣,使用運算子=可以改變陣列元素的內容。陣列單元可以通過 array[key] 語法來訪問。 php定義函式: <?php $

php中的陣列操作函式整理

PHP 中的陣列實際上是一個有序圖。圖是一種把 values 對映到 keys的型別。此型別在很多方面做了優化,因此可以把它當成真正的陣列來使用,或列表(向量),散列表(是圖的一種實現),字典,集合,棧,佇列以及更多可能性。因為可以用另一個 PHP 陣列作為值,也可以很容易地

jqm文件上傳,上傳圖片,jqm的表單操作,jqm的ajax的使用,jqm文件操作大全,文件操作demo

今天 south eth 1.8 get pri pos nis gravity 近期在論壇中看到。在使用html5中上傳圖片或文件,出現各種問題。這一方面,我也一直沒有做過,今天就抽出了一點時間來學習一下。如今的演示樣例已經ok了,我就給大家分享一下,希望對大家有幫助

Asp.Net文件和文件夾操作大全

訪問 讀屬性 for ubd leo 所有 asp.net close ots /// /// 創建文件夾 /// /// public static void FolderCreate(stri

【整理】C#文件操作大全(SamWang)

cto read image creating ram exceptio file類 詳細 ima 文件與文件夾操作主要用到以下幾個類:   1.File類:   提供用於創建、復制、刪除、移動和打開文件的靜態方法,並協助創建 FileStre

js數組操作大全

之前 耗時 返回值 value 只需要 push 如果 可靠 ppi js數組操作大全(轉) shift:刪除原數組第一項,並返回刪除元素的值;如果數組為空則返回undefined var a = [1,2,3,4,5]; var b = a.shift(); //a:[

使用PHP+MySql操作——實現微信投票功能

lis 結果 ansi 代號 his html back utf-8 微信 1. 投票主頁面: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/

CSS選擇器操作大全

lin enter 屬性 子元素 支持 ron 僅支持 常用 所有 一,CSS選擇器分類 二,選擇器語法 1,基本選擇器語法 選擇器 類型 功能描述 * 通配選擇器 選擇文檔中所以HTML元素 E 元素選擇器 選擇指定類型的HTML元素 #id

Elasticsearch-PHP 索引操作2

values sea start lang for 轉換 key filter 支持 索引操作 索引在客戶端非常容易。因為關聯數組很容易轉換為JSON文檔,索引文檔只是提供正確和結構性的關聯數組和調用方法。 單文檔索引 當你索引你個文檔時,可以自己提供一個ID,也可以讓

angular2之pdf文件操作大全

ams 代碼 如果 angular result buffer one key logs 最近的項目中需要顯示pdf內容、下載pdf、甚至是前端生成pdf 適用於angular2、4或者更高版本 情景1.需要將頁面的某個部分轉成pdf文件並下載(即將頁面的部分ht

LNMP之PHP安裝操作步驟

php安裝 php參數 lnmp =======> LNMP 之 PHP安裝操作步驟 <==================1、==>備份默認源==>下載mirrors.163.com源==>yum安裝epel源wget -O /etc/yum.repos.d/Cen

ubuntu PHP相關操作

sta tar install 操作 director div bsp rec all php開啟重寫模塊 vim /etc/apache2/apache2.conf 寫入<Directory /阿帕奇的項目目錄> AllowOverride All </