1. 程式人生 > >換行顯示print_r($arr);打印結果顯示:Array( [0] => 百度 [1] => 阿裏)

換行顯示print_r($arr);打印結果顯示:Array( [0] => 百度 [1] => 阿裏)

類型 ray 找到 多維數組 a* 變量名 push 戰爭 整數

數組array是非常重要的數據類型。相對於其他的數據類型,它更像是一種結構,而這種結果構可以存儲一系列數值。數組能夠在單一變量名中存儲許多值,並且能夠通過引用下標號來訪問某個值。
在 PHP 中,有三種數組類型:
索引數組 - 帶有數字索引的數組
關聯數組 - 帶有指定鍵的數組
多維數組 - 包含一個或多個數組的數組

一、創建數組

array(key => value)

1、創建索引數組

使用array()函數聲明數組。PHP屬於弱類型語言相對較靈活和方便,也可以直接是數組的元素值value,不需要鍵值key,索引是自動分配的(索引從 0 開始)。
例:

?

1234567

array("1" => "百度","2" => "阿裏","3" => "騰訊");或者是不使用鍵值:array("百度","阿裏","騰訊");當然也可以寫成:$arr[0] = "百度";$arr[1] = "阿裏";$arr[2] = "騰訊";

2、創建關聯數組

關聯數組和索引數組類似,只是關聯數組不能夠像索引數組的鍵名那樣只能夠為數字,它可以是數值和字符串以及混合形式,判斷一個數組是否為關聯數組的依據是:數組中的鍵名是否存在一個不是數字的。不是就是關聯。

array("李彥宏" => "百度","馬雲" => "阿裏","馬化騰" => "騰訊");

3、多維數組

array(array(),array()) 二維數組

獲得數組的長度 - count() 函數

?

1234

<?php$arr = array("百度","阿裏","騰訊");echo count($arr);?> //結果返回3(說明數組中有三個元素)

二、遍歷數組

輸出數組中元素的值。對於索引數組常用for、foreach;對於關聯數組常用foreach。使用print_r()函數打印循環後的結果,也可以用var_dump()。

1、遍歷索引數組

遍歷並輸出索引數組的所有值,可以使用for、 foreach(array_expression as value)、foreach(arrayexpressionaskey => $value) 循環,如下:

使用for循環


?

12345678

<?php$arr = array("百度","阿裏","騰訊");$arrlen = count($arr);//獲取數組的長度for ($i=0; $i <$arrlen ; $i++) { $data[] = $arr[$i]; }echo "<pre>"; //換行顯示print_r($data);

打印結果顯示如下:
Array
(
[0] => 百度
[1] => 阿裏
[2] => 騰訊
)
使用foreach循環


?

1234567

<?php$arr = array("百度","阿裏","騰訊");foreach ($arr as $value) { $data[] = $value;}echo "<pre>"; //換行顯示print_r($data);//打印結果和上面一樣

註意:data後面有一個數組符號[],為什麽呢?

2、遍歷關聯數組

遍歷並輸出關聯數組的所有值,可以使用 foreach (array_expression as key=>value) 循環,如下:

?

1234567

<?php$arr = array("李彥宏" => "百度","馬雲" => "阿裏","馬化騰" => "騰訊");foreach ($arr as $key => $value) { $data[$key] = $value;}echo "<pre>"; //換行顯示print_r($data);

打印結果顯示:


?

123456

Array( [李彥宏] => 百度 [馬雲] => 阿裏 [馬化騰] => 騰訊)

註意到沒?此時的data後是[$key]?而不是[]
一個數關聯數組一個是數字索引數組,

三、增加刪除數組的元素

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

?

1234567891011121314

<?php$arr = array("百度","阿裏","騰訊");array_push($arr,"知乎","微博");echo "<pre>"; //換行顯示print_r($arr);//打印結果顯示:Array( [0] => 百度 [1] => 阿裏 [2] => 騰訊 [3] => 知乎 [4] => 微博)

在數組元素的開始增加
array_unshift(array,value1,value2,value3…) 函數用於向數組插入新元素。新數組的值將被插入到數組的開頭。

?

1234567891011121314

<?php$arr = array("百度","阿裏","騰訊");array_unshift($arr,"知乎","微博");echo "<pre>"; //換行顯示print_r($arr);//打印結果顯示:Array( [0] => 知乎 [1] => 微博 [2] => 百度 [3] => 阿裏 [4] => 騰訊)

在數組元素的尾部刪除
array_pop(array) 函數刪除數組中的最後一個元素。

?

1234567891011

<?php$arr = array("百度","阿裏","騰訊");array_pop($arr);echo "<pre>"; //換行顯示print_r($arr);打印結果顯示:Array( [0] => 百度 [1] => 阿裏)

在數組元素的開始刪除
array_shift(array) 函數刪除數組中第一個元素 並可以返回被刪除元素的值。

?

1234567891011

<?php$arr = array("百度","阿裏","騰訊");array_shift($arr);echo "<pre>"; //換行顯示print_r($arr);打印結果顯示:Array( [0] => 阿裏 [1] => 騰訊)

移除數組中重復的值
array_unique(array) 函數移除數組中的重復的值,並返回結果數組。

?

12345678910111213

<?php$arr = array("百度","阿裏","騰訊","百度","微博");$data = array_unique($arr);echo "<pre>";print_r($data);打印結果顯示:Array( [0] => 百度 [1] => 阿裏 [2] => 騰訊 [4] => 微博)

四、定位數組元素

搜索數組中存在的值
in_array(search,array,type)檢查數組中是否存在指定的值。
如果給定的值 search 存在於數組 array 中則返回 true。如果第三個參數設置為 true,函數只有在元素存在於數組中且數據類型與給定值相同時才返回 true。如果沒有在數組中找到參數,函數返回 false。

?

123456

<?php$arr = array("百度","阿裏","騰訊");while (in_array("百度", $arr)) { echo "已經找到"; break;} //輸出已經找到

在數組中根據條件取出一段值: array_slice(array,start,length,preserve)
start 必需。數值。規定取出元素的開始位置。 0 = 第一個元素。
如果該值設置為正數,則從前往後開始取。
如果該值設置為負數,則從後向前取 start 絕對值。 -2 意味著從數組的倒數第二個元素開始。

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

?

12345678910111213

<?php$arr = array("百度","阿裏","騰訊","知乎","微博");$data = array_slice($arr,0,4);echo "<pre>";print_r($data);打印結果顯示:Array( [0] => 百度 [1] => 阿裏 [2] => 騰訊 [3] => 知乎)

array_splice(array,start,length,array) 函數從數組中移除選定的元素,並用新元素取代它。該函數也將返回包含被移除元素的數組。

?

12345678910111213

<?php$arr1 = array("百度","阿裏","騰訊");$arr2 = array("知乎","微博");array_splice($arr1,0,2,$arr2);echo "<pre>";print_r($arr1);打印結果顯示:Array( [0] => 知乎 [1] => 微博 [2] => 騰訊)

五、數組合並、拆分、比較

array_merge()函數將數組合並到一起,返回一個聯合的數組。所得到的數組以第一個輸入數組參數開始,按後面數組參數出現的順序依次追加。

?

123456789101112131415

<?php$arr1 = array("百度","阿裏","騰訊");$arr2 = array("知乎","微博");$data = array_merge($arr1,$arr2);echo "<pre>";print_r($data);打印結果顯示:Array( [0] => 百度 [1] => 阿裏 [2] => 騰訊 [3] => 知乎 [4] => 微博)

遞歸追加數組
array_merge_recursive()函數與array_merge()相同,可以將兩個或多個數組合並到一起,形成一個聯合的數組。兩者之間的區別在於,當某個輸入數組中的某個鍵已經存在於結果數組中時該函數會采取不同的處理方法。array_merge()會覆蓋前面存在的鍵/值對,將其替換為當前輸入數組中的鍵/值對,而array_merge_recursive()將兩個值合並在一起,形成一個新的數組並以原有的鍵作為數組名。其形式為:

?

12345678910111213141516

$arr= array(‘one‘=>‘C‘, ‘one‘=>‘B‘); $arr1= array(‘three‘=>‘1‘, ‘one‘=>‘2‘); $arr2= array_merge_recursive($arr, $arr1); echo "<pre>";print_r($arr2); 打印結果顯示:Array( [one] => Array ( [0] => B [1] => 2 ) [three] => 1)

合並兩個數組
array_combine()函數會生成一個新數組,這個數組由一組提交的鍵和對應的值組成,其形式為:

?

1234567891011

$arr= array(‘A‘, ‘B‘); $arr1= array(‘1‘, ‘2‘); $arr2= array_combine($arr, $arr1);echo "<pre>";print_r($arr2); 打印結果顯示:Array( [A] => 1 [B] => 2)

求數組的交集
array_intersect()函數返回一個保留了鍵的數組,這個數組只由第一個數組中出現的且在其他每個輸入數組中都出現的值組成。其形式如下:

?

1234567891011

$arr= array(‘A‘, ‘B‘, ‘C‘, ‘D‘); $arr1= array(‘A‘, ‘B‘, ‘E‘); $arr2= array(‘A‘, ‘F‘, ‘D‘); $arr3= array_intersect($arr, $arr1, $arr2); echo "<pre>";print_r($arr3); 打印結果顯示:Array( [0] => A)

註意:只有在兩個元素有相同的數據類型時,array_intersect()才會認為它們相等。

求關聯數組的交集
array_intersect_assoc()與array_intersect()基本相同,只不過它在比較中還考慮了數組的鍵。因此,只有在第一個數組中出現,且在所有其他輸入數組中也出現的鍵/值對才被返回到結果數組中。其形式如下:

?

1234567891011

$arr= array(‘a‘=>‘A‘, ‘b‘=>‘B‘, ‘c‘=>‘C‘, ‘d‘=>‘D‘); $arr1= array(‘a‘=>‘A‘, ‘c‘=>‘B‘, ‘E‘); $arr2= array(‘a‘=>‘A‘, ‘b‘=>‘F‘, ‘d‘=>‘B‘); $arr3= array_intersect_assoc($arr, $arr1, $arr2); echo "<pre>";print_r($arr3); 打印結果顯示:Array( [a] => A)

求關聯數組的差集
函數array_diff_assoc()與array_diff()基本相同,只是它在比較時還考慮了數組的鍵,因此,只在第一個數組中出現而不在其他輸入數組中出現的鍵/值對才會被返回到結果數組中。其形式如下:

?

1234567891011

$arr= array(‘a‘=>‘A‘, ‘b‘=>‘B‘, ‘c‘=>‘C‘, ‘d‘=>‘D‘); $arr1= array(‘a‘=>‘A‘, ‘b‘=>‘B‘, ‘e‘=>‘E‘); $arr3= array_diff_assoc($arr, $arr1); echo "<pre>";print_r($arr3); 打印結果顯示:Array( [c] => C [d] => D)

其他有用的數組函數
返回一組隨機的鍵 array_rand()函數將返回數組中的一個或多個鍵。其形式為:

?

12345678910

$arr= array(‘a‘=>‘A‘, ‘b‘=>‘B‘, ‘c‘=>‘C‘, ‘d‘=>‘D‘); $arr1= array_rand($arr, 2); echo "<pre>";print_r($arr1);打印結果顯示: Array( [0] => c [1] => d) //每次刷新顯示的結果都不一樣

對數組中的值求和
array_sum()函數將數組內的所有值加在一起,返回最終的和,其形式如下:

?

1234

$arr= array(‘A‘, 32, 12, ‘B‘); $count= array_sum($arr); echo "<pre>";print_r($count);

打印結果顯示:
44

如果數組中包含其他數據類型(例如字符串),這些值將被忽略。

劃分數組
array_chunk()函數將數組分解為一個多維數組,這個多維數組由多個包含size個元素的數組所組成。其形式如下:

?

1234

$arr= array(‘A‘, ‘B‘, ‘C‘, ‘D‘); $arr1= array_chunk($arr, 2); echo "<pre>";print_r($arr1);

打印結果顯示:


?

123456789101112131415

Array( [0] => Array ( [0] => A [1] => B ) [1] => Array ( [0] => C [1] => D ) )

處理數組時可調用函數有

?

123456

array_filter(*array*,*callbackfunction*);array_intersect_uassoc(*array1*,*array2*,*array3*...,*myfunction*)array_intersect_ukey(*array1*,*array2*,*array3*...,*myfunction*)array_reduce(*array*,*myfunction*,*initial*)array_walk(*array*,*myfunction*,*userdata*...)……

聽完伽利略的話後傑夫苦笑道:“我倒是想帶著大家離開,逃離這是非之地,雖然舍不得看雷恩的子民被欺淩,不過我們也顧不上那麽多了。不過義父,我現在很恨獸神啊。都是因為獸神搞得這些神棍的東西,弄得現在丹妮還有爺爺這些戰爭祭祀都被洗腦了,就知道愚忠於雷恩和獸神。看了卡拉贊的消息傑夫心底有些欣慰,雖然對他信中所說的雷恩快完蛋了不爽,不過傑夫心中還是很感激卡拉贊的。畢竟自己和卡拉贊目前還算是無親無故,以前只是單純的合作關系,現在卡拉贊居然敢這樣保證,由此可見他對自己的真心。傑夫向來是個感恩的人,只要別人對自己好,自己就會對別人掏心挖肺,現在卡拉贊在他心中的地位更是一躍千裏直接達到了接近伽利略和老卡丹這樣的地步。我現在已經達到了十級,而且還有龍神鎧和龍神之力這兩個助力,除此之外,我還有奧達曼之心這個防禦性神器以及攻擊性神器哥布林之怒。我還是一個火系神靈在這個位面的使者,如果有需要我可以召喚那位神靈過來這邊。對了,我還有兩位愛人,一位是丹妮另外一位就是莉莉,我的話說完了。而且,我已經得到了光明神的神諭,如果我們的力量不足以碾壓異教徒,天使軍團將會再次降臨將光明神的光輝傳遍大地!贊美光明女神!” 畢達斯也一臉神棍相的說道:“贊美光明女神!” 教皇點了點頭,接著說道:“對了,你下去之後記得告訴聖女,不要再那麽能鬧騰了。” 畢達斯聽到聖女的名號之後,立刻打了個寒顫,顯然是以前受到過聖女的“青睞”。告退之後,畢達斯咬咬牙,終於還是無奈的向聖女的聖女殿走去。” 傑夫看兩方的氣氛有些尷尬,忙勸道:“哎,這都不是有意為之,大家就都退一步吧。對了,血王,這個傻大個兒可是個神靈,我還想讓他幫你看下聖女的傷勢呢!” 血王一聽,身體一抖差點嚇得跌倒在地。他睜大雙眼不敢置信的問道:“什,什麽?你說,他,他是一個神靈?” 傑夫笑道:“對啊,你可以叫他火神,對吧,大個子?”

換行顯示print_r($arr);打印結果顯示:Array( [0] => 百度 [1] => 阿裏)