亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 語言 > PHP > 正文

學習PHP的數組總結【經驗】

2024-05-04 23:45:35
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了學習PHP的數組總結【經驗】,需要的朋友可以參考下
 

PHP有很多關于數組的函數,方便數組操作。

定義:

數組每個實體包含兩個項:key和value,可以通過查詢鍵來獲取其相應的值。這些鍵可以是數值(numerical)鍵或關聯(associative)鍵。數值鍵與值沒有真正的聯系,它們只是值在數組中的位置。

PHP提供了很多遍歷數組的方法,無法使用關聯鍵還是數值鍵,都依賴于一種稱為數組指針的特性。

創建數組

PHP不需要在創建數組時指定其大小,因為PHP是一種松散的語言,所以不需要在使用數組前先行聲明。盡管沒有限制,PHP仍提供了正式和非正式的數組聲明方法。

引用PHP數組的各個元素,用一對中括號來指示。數組沒有大小限制,所以只需建立引用就可以創建數組,例如:

$state[0]= ‘111';$state[1]= ‘222';

 

如果索引值是數值索引而且是遞增的,還可以在創建時省略索引值。

$state[] =‘111';$state[] =‘222';

 

可以使用array()創建數組,如:

$state =array(‘111', ‘222');$state =array(‘one'=>'111', ‘two'=>'222');

 

使用list()提取數組,例如:

$state= array(‘one', ‘two', ‘three');list($one,$two, $three) = $state;

數組內的三個值分別賦給了$one, $two,$three, 可直接輸出。

用預定義的值范圍填充數組,例如:

$num= range(1, 6);//類似于$num =array(1, 2, 3, 4, 5, 6);可選擇奇偶:$num =range(1, 6, 2);

 

//$num= array(1, 3, 5);可選擇字母:$ch =range(“A”, “F”);//$ch= array(“A”, “B”, “C”, “D”, “E”, “F”);

 

輸出數組

輸出數組內容最常用的方法就是迭代處理各個數組鍵,并輸出相應的值。

foreach()函數可以很方便的遍歷一個數組,得到每個value和key。

print_r()函數很方便將數組的內容輸出到屏幕上。prinf_r()函數接受一個變量,并將其內容發送給標準輸出,成功時返回TRUE,否則返回FALSE。

測試數組

通過is_array()函數知道某個特定變量是否一個數組。

is_array()函數確定某變量是否為數組,如果是則返回TRUE,否則返回FALSE。即使數組只包含一個值,也將被認為是一個數組。

添加和刪除數組元素

PHP為擴大和縮小數組提供了一些函數,對模仿各種隊列實現提供便利。

在數組頭添加元素:

array_unshift()函數在數組頭添加元素。所有已有的數值鍵都會相應地修改,以反映其在數組中的新位置,但是關聯鍵不受影響。

$state= array(‘11', ‘22', ‘33');array_unshift($state,‘00');//$state= array(‘00', ‘11', ‘22', ‘33');

 

在數組尾添加元素:

array_push()函數將值添加到數組的末尾,添加新的值之后返回數組中的元素總數。同時通過將這個變量作為輸入參數傳遞給此函數,向數組壓入多個變量(元素),其形式為:

$state= array(‘1', ‘2');array_push($state,‘3');//$state= array(‘1', ‘2', ‘3');

 

從數組頭刪除元素:

array_shift()函數刪除并返回數組中找到的第一個元素。其結果是,如果使用的是數值鍵,則所有相應的值都會下移,而使用關聯鍵的數組不受影響,其形式為:

$state= array(‘1', ‘2');array_shift($state);//$state= array(‘2');

從數組尾刪除元素:

array_pop()函數刪除并返回數組的最后一個元素,其形式為:

$state= array(‘1', ‘2');array_pop($state);//$state= array(‘1');

 

定位數組元素

搜索數組:

in_array()函數在數組中搜索一個特定值,如果找到這個值則返回TRUE,否則返回FALSE,其形式如下:

$user= array(‘111', ‘222', ‘333');$str= ‘111';if(in_array($str,$user)){echo‘yes';}else{echo ‘no';}

 

第三個參數strict可選,它強制in_array()在搜索時考慮類型。

搜索關聯數組:

如果在一個數組中找到一個指定的鍵,函數array_key_exists()返回TRUE,否則返回FALSE。其形式如下:

$arr= array('one'=>'1', 'two'=>'2', 'three'=>'3');if(array_key_exists('two',$arr)){echo'yes';}else{echo‘no';}

搜索關聯數組:

array_search()函數在一個數組中搜索一個指定的值,如果找到則返回相應的值,否則返回FALSE,其形式如下:

$arr= array('one'=>'1', 'two'=>'2', 'three'=>'3');if(array_search('1',$arr)){echo'yes';}else{echo‘no';}

 

獲取數組鍵:

array_key()函數返回一個數組,其中包含所搜索數組中找到的所有鍵,其形式如下:

$arr= array('one'=>'1', 'two'=>'2', 'three'=>'3');$keys= array_keys($arr);var_dump($keys);//array(3) {[0]=> string(3) "one" [1]=> string(3) "two" [2]=>string(5) "three" }

 

獲取數組值:

array_values()函數返回一個數組中的所有值,并自動為返回的數組提供數組索引,其形式如下:

$arr= array('one'=>'1', 'two'=>'2', 'three'=>'3');$values= array_values($arr);var_dump($values);//array(3) {[0]=> string(1) "1" [1]=> string(1) "2" [2]=>string(1) "3" }

遍歷數組

通常需要遍歷數組并獲得各個鍵或值(或者同時獲得鍵和值),PHP提供了一些函數來滿足需求。許多函數能完成兩項任務,不僅能獲取當前指針位置的鍵或值,還能將指針移向下一個適當的位置。

獲取當前數組鍵:

key()函數返回數組中當前指針所在位置的鍵,其形式如下:

$arr= array('one'=>'1', 'two'=>'2', 'three'=>'3');$key= key($arr);var_dump($key);//string(3) "one"

 

注意:每次調用key()時不會移動指針。

獲取當前數組值:

current()函數返回數組中當前指針所在位置的數組值。其形式如下:

$arr= array('one'=>'1', 'two'=>'2', 'three'=>'3');$value= current($arr);var_dump($value);//string(1)“1”

 

獲取當前數組鍵和值:

each()函數返回數組的當前鍵/值對,并將指針推進一個位置,其形式如下:

$arr =array('one'=>'1', 'two'=>'2', 'three'=>'3');var_dump(each($arr));//array(4) {[1]=> string(1) "1" ["value"]=> string(1)"1" [0]=> string(3) "one" ["key"]=>string(3) "one" }

 

返回的數組包含4個鍵,鍵0和key鍵包含鍵名,而鍵1和value包含相應的數據。如果執行each()前指針位于數組末尾,則返回FALSE。

移動數組指針:

1) 將指針移動到下一個數組位置

next()函數返回緊接著放在當前數組指針下一個位置的數組值,如果指針本來就位于數組的最后一個位置,則返回FALSE

$arr= array('one'=>'1', 'two'=>'2', 'three'=>'3');echo next($arr); //輸出2echo next($arr); //輸出3

 

2) 將指針移動到前一個數組位置

prev()函數返回位于當前指針前一個位置的數組值,如果指針本來就位于數組的第一個位置,則返回FALSE

3) 將指針移動到第一個數組位置

reset()函數用于將數組指針設置回數組的開始位置,如果需要在腳本中多次查看或處理一個數組,經常使用這個函數,另外這個函數還經常在排序結束時使用。

4) 將指針移動到最后一個數組位置

end()函數將指針移動到數組的最后一個位置,并返回最后一個元素。

向函數傳遞數組值:

array_walk()函數將數組中的各個元素傳遞到用戶自定義函數。如果需要對各個數組元素完成某個特定動作,這個函數將起作用。其形式如下:

functiontest($value ,$key){echo$value.' '.$key."";}$arr= array('one'=>'1', 'two'=>'2', 'three'=>'3');array_walk($arr,'test');//1 one//2 two//3 three

如果使用多維數組,PHP5中引入的array_walk_recursive()函數可以遞歸地對數組中的每一個元素應用一個用戶定義函數。

確定數組大小和元素唯一性

確定數組的大?。?/p>

count()函數返回數組中值的總數

如果啟動了可選的mode參數(設置為1),數組將進行遞歸計數統計元素。count(array(), 1);

注意:sizeof()函數是count()的別名。功能一致。

統計數組元素出現的頻率:

array_count_values()函數返回一個包含關聯鍵/值對的數組,其形式如下:

$arr= array('A', 'B', 'C', 'A');$res= array_count_values($arr);print_r($res);//Array( [A] => 2 [B] => 1 [C] => 1 )

值表示出現的頻率。

確定唯一的數組元素:

array_unique()函數會刪除數組中所有重復的值,返回一個由唯一值組成的數組,其形式如下:

$arr= array('A', 'B', 'C', 'A');$res= array_unique($arr);print_r($res);//Array( [0] => A [1] => B [2] => C )

可選參數sort_flags(PHP5.2.9中新增)可以確定如何對數組鍵排序。默認地,值會被作為字符串排序,不過也可以按數值對值排序(SORT_NUMERIC),或使用PHP默認的排序方法(SORT_REGULAR),還可以根據本地化環境排序(SORT_LOCALE_STRING)。

數組排序

逆置數組元素排序:

array_reverse()函數將數組中元素的順序逆置,其形式如下:

$arr= array('A', 'B', 'C');$res= array_reverse($arr);print_r($res);//Array( [0] => C [1] => B [2] => A )

如果可選參數preserve_keys設置為TRUE,則保持鍵映射,否則重新擺放后的各個值將對應于先前該位置上的相應鍵。

$arr= array('A', 'B', 'C');$res= array_reverse($arr, true);print_r($res);//Array( [2] => C [1] => B [0] => A )

置換數組鍵和值:

array_flip()函數將置換數組中鍵及其相應值的角色,其形式如下:

$arr= array('A', 'B', 'C');$res= array_flip($arr);print_r($res);//Array( [A] => 0 [B] => 1 [C] => 2 )

數組排序:

sort()函數對數組進行排序,各元素按值由低到高的順序排列,其形式如下:

sort()函數不返回排序后的數組,相反它只是“就地”對數組排序,不論結果如何都不返回任何值。sort_flags參數可選,將根據這個參數指定的值修改該函數的默認行為。

1) SORT_NUMERIC,按數值排序。對整數和浮點數排序很有用。

2) SORT_REGULAR,按照相應的ASCII值對元素排序。

3) SORT_STRING,按接近于人所認知的正確順序對元素排序。

要保持初始鍵/值對應條件下的數組排序需要用到asort()函數。

assort()函數與sort()函數相同,以升序對數組排序,只不過它將保持鍵/值的關聯,其形式如下:

$arr= array('C', 'B', 'A');$res= $arr;print_r($arr);sort($arr);print_r($arr);asort($res);print_r($res);//Array ( [0]=> C [1] => B [2] => A ) Array ( [0] => A [1] => B [2] => C )Array ( [2] => A [1] => B [0] => C )

以逆序對數組排序

rsort()函數與sort()函數相同,只不過它以相反的順序(降序)對數組元素排序。

如果使用可選的sort_flags參數,具體的排序行為將由這個值確定。

保持鍵/值對的條件下以逆序對數組排序

與asort()一樣,arsort()函數會保持鍵/值的關聯,但是它以逆序對數組up

$arr= array('C', 'B', 'A', 'D');arsort($arr);print_r($arr);//Array( [3] => D [0] => C [1] => B [2] => A )

如果使用可選的sort_flags參數,具體的排序行為將由這個值確定。

數組自然排序

natsort()函數提供了一種相當于人們平常使用的排序機制。

典型算法排序如下:

p1.jpg,p10.jpg, p2.jpg, p20.jpg

使用natsort()函數如下:

p1.jpg,p2.jpg, p10.jpg, p20.jpg

不區分大小寫的自然排序

如:

Picture1.jpg,PICTURE10.jpg, picture2.jpg, picture20.jpg

按鍵值對數組排序

ksort()函數按鍵對數組排序,如果成功則返回TRUE,失敗將返回FALSE

以逆序對數組鍵排序

krsort()函數的操作與ksort()相同,也按鍵排序,將以逆序排序。

根據用戶自定義規則排序

usort()函數提供了另一種排序方法,可以使用在該函數中指定的用戶自定義比較算法對數組排序。如果需要以某種方法對數據排序,而PHP的任何內置排序函數沒有提供相應支持,就需要該函數。

數組合并、拆分、接合和分解

合并數組

array_merge()函數將數組合并到一起,返回一個聯合的數組。所得到的數組以第一個輸入數組參數開始,按后面數組參數出現的順序依次追加。其形式如下:

$arr= array('C', 'B', 'A', 'D');$arr1= array('1', '2', '3', '4');$arr2= array_merge($arr, $arr1);print_r($arr2);//Array( [0] => C [1] => B [2] => A [3] => D [4] => 1 [5] => 2 [6]=> 3 [7] => 4 )

遞歸追加數組

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

$arr= array('one'=>'C', 'one'=>'B');$arr1= array('three'=>'1', 'one'=>'2');$arr2= array_merge_recursive($arr, $arr1);print_r($arr2);//Array( [one] => Array ( [0] => B [1] => 2 ) [three] => 1 )

合并兩個數組

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

$arr= array('A', 'B');$arr1= array('1', '2');$arr2= array_combine($arr, $arr1);print_r($arr2);//Array( [A] => 1 [B] => 2 )

拆分數組

array_slice()函數將返回數組中的一部分,從鍵offset開始,到offset+length位置結束。

offset為正值時,拆分將從距數組開頭的offset位置開始;如果offset為負值,則拆分從距數組末尾的offset位置開始。如果省略了可選參數length,則拆分將從offset開始,一直到數組的最后一個元素。如果給出了length且為正數,則會在距數組開頭的offset+length位置結束。相反,如果給出了length且為負數,則在距數組開頭的count(array) - |length|位置結束。其形式如下:

$arr= array('A', 'B', 'C', 'D');$arr1= array_slice($arr, 2, 1);print_r($arr1);//Array( [0] => C )

求數組的交集

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

$arr= array('A', 'B', 'C', 'D');$arr1= array('A', 'B', 'E');$arr2= array('A', 'F', 'D');$arr3= array_intersect($arr, $arr1, $arr2);print_r($arr3);//Array( [0] => A )

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

求關聯數組的交集

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

$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);print_r($arr3);//Array( [a] => A )

求關聯數組的差集

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

$arr= array('a'=>'A', 'b'=>'B', 'c'=>'C', 'd'=>'D');$arr1= array('a'=>'A', 'b'=>'B', 'e'=>'E');$arr3= array_diff_assoc($arr, $arr1);print_r($arr3);//Array( [c] => C [d] => D )

其他有用的數組函數

返回一組隨機的鍵

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

$arr= array('a'=>'A', 'b'=>'B', 'c'=>'C', 'd'=>'D');$arr1= array_rand($arr, 2);print_r($arr1);//Array( [0] => b [1] => d )

隨機洗牌數組元素

shuffle()函數隨機地對數組元素重新排序。

對數組中的值求和

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

$arr= array('A', 32, 12, 'B');$count= array_sum($arr);print_r($count);//44

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

劃分數組

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

$arr= array('A', 'B', 'C', 'D');$arr1= array_chunk($arr, 2);print_r($arr1);//Array( [0] => Array ( [0] => A [1] => B ) [1] => Array ( [0] => C [1]=> D ) )


注:相關教程知識閱讀請移步到PHP教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲free性xxxx护士白浆| 一区二区三区四区在线观看视频| 中文字幕精品—区二区| 欧美日韩国产在线看| 青青a在线精品免费观看| 欧美一区二区三区免费视| 亚洲精选在线观看| 91成人免费观看网站| 国产丝袜高跟一区| 欧美日韩午夜视频在线观看| 亚洲一区二区免费| 欧美精品www| 久久久久久久激情视频| 精品国产31久久久久久| 97色在线播放视频| 国产精品r级在线| 欧洲成人午夜免费大片| 精品亚洲一区二区三区| 久久久精品网站| 欧美黑人又粗大| 中文字幕精品一区久久久久| 精品露脸国产偷人在视频| 久久噜噜噜精品国产亚洲综合| 91av在线影院| 中文字幕视频一区二区在线有码| 国产精品手机播放| 欧美激情视频三区| 色狠狠av一区二区三区香蕉蜜桃| 成人精品久久av网站| 亚洲xxx大片| 色偷偷综合社区| 久久久免费精品| 精品视频在线播放免| 国产精品jvid在线观看蜜臀| 中文字幕亚洲综合久久| 精品国产一区久久久| 中文字幕成人精品久久不卡| 亚洲黄页网在线观看| 国产欧美精品一区二区| 欧亚精品中文字幕| 亚洲国语精品自产拍在线观看| 国产亚洲精品一区二区| 91禁国产网站| 日本久久久a级免费| 一本一道久久a久久精品逆3p| 欧美成人第一页| 国产精品日韩精品| 亚洲欧美日韩在线高清直播| 日韩欧美一区二区在线| 欧美午夜丰满在线18影院| 欧美性猛交xxxx久久久| 久久久久久尹人网香蕉| 国产精品视频内| 欧美国产日韩精品| 欧美一区二区三区四区在线| 亲爱的老师9免费观看全集电视剧| 精品久久久久久电影| 精品欧美一区二区三区| 欧洲成人在线观看| 国产精品久久久久影院日本| 色一情一乱一区二区| 成人免费福利在线| 欧美性猛交xxxx免费看久久久| 国产在线观看精品一区二区三区| 欧美日韩国产123| 在线观看国产精品日韩av| 国产精品影片在线观看| 亚洲欧美日韩综合| 久久手机精品视频| 欧美激情欧美狂野欧美精品| 国内精品久久久久伊人av| 国产久一一精品| 日韩欧美一区二区三区久久| 亚洲电影第1页| 欧美精品日韩www.p站| 欧美片一区二区三区| 欧美日韩在线一区| 国产精品一区二区在线| 欧美激情亚洲激情| 日韩精品在线第一页| 亚洲欧美日韩网| 欧美精品第一页在线播放| 国产九九精品视频| 日韩美女在线看| 亚洲www在线观看| 91久久精品一区| 国产一区视频在线| 久久久久久久久久久av| 亚洲综合中文字幕在线观看| 日韩在线观看免费高清| 97视频在线观看免费高清完整版在线观看| 精品国内亚洲在观看18黄| 国产成人精品一区二区在线| 国产丝袜一区二区三区免费视频| 91免费欧美精品| 最近2019中文免费高清视频观看www99| 欧美激情精品久久久久久蜜臀| 日韩成人av网| 欧美成人免费小视频| 亚洲无av在线中文字幕| 午夜精品一区二区三区在线视| 色一情一乱一区二区| 亚洲国产女人aaa毛片在线| 91精品国产综合久久香蕉922| 欧美激情在线视频二区| 亚洲天堂av在线免费| 2019最新中文字幕| 久久久国产精品x99av| 91在线视频免费| 亚洲性无码av在线| 日韩中文在线不卡| 亚洲国产中文字幕久久网| 热草久综合在线| 日韩av在线最新| 日韩在线视频二区| 九九精品在线播放| 国产精品久久久久影院日本| 亚洲国产又黄又爽女人高潮的| 浅井舞香一区二区| 中文字幕日本精品| 久久久久久久久91| 国产91九色视频| 亚洲第一精品自拍| 91天堂在线观看| 亚洲自拍偷拍视频| 国产精品白丝av嫩草影院| 影音先锋日韩有码| 欧美激情成人在线视频| 怡红院精品视频| 久久夜色精品国产亚洲aⅴ| 日韩精品视频三区| 97精品久久久| 亚洲国产高清自拍| 秋霞午夜一区二区| 国产精品成久久久久三级| 亚洲级视频在线观看免费1级| www.久久撸.com| 国产精品99久久久久久白浆小说| 亚洲白拍色综合图区| 黑人欧美xxxx| 欧美日韩在线视频首页| 欧美视频在线观看免费网址| 日韩精品中文字幕有码专区| 亚洲福利视频在线| 久久欧美在线电影| 久久久免费精品视频| 欧美限制级电影在线观看| 欧美高清性猛交| www.久久色.com| 国产精品久久77777| 欧美做受高潮电影o| 精品视频久久久久久| 日韩高清电影好看的电视剧电影| 亚洲伊人一本大道中文字幕| 成人午夜在线影院| 亚洲www在线观看| 久久艳片www.17c.com| 精品一区二区三区三区| 久久69精品久久久久久国产越南| 日韩成人中文字幕在线观看| 欧美影院久久久| www.久久久久| 亚洲成色777777女色窝| 麻豆一区二区在线观看|