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

首頁 > 編程 > PHP > 正文

PHP數組的使用方法

2020-03-22 17:33:27
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了關于PHP數組的使用方法,有著一定的參考價值,現在分享給大家,有需要的朋友可以參考一下

這個教程我將通過一些實用的實例和最佳實踐的方式列舉出 PHP 中常用的數組函數。每個 PHP 工程師都應該掌握它們的使用方法,以及如何通過組合使用來編寫更精簡且易讀的代碼。

另外,我們提供了相關示例代碼的演示文稿,你可以從相關鏈接下載它,并分享給你的團隊來打造更強的團隊。

入門

先讓我們從一些處理數組鍵名和鍵值的基礎數組函數開始。array_combine() 作為數組函數中的一員,用于通過使用一個數組的值作為其鍵名,另一個數組的值作為其值來創建一個全新數組:

 ?php$keys = [ sky , grass , orange $html' target='_blank'>values = [ blue , green , orange $array = array_combine($keys, $values);print_r($array);// Array// [sky] = blue// [grass] = green// [orange] = orange// )

你應該知道,array_values() 函數會以索引數組形式返回數組中的值,array_keys() 則會返回給定數組的鍵名, 以及 array_flip() 函數,它的功能則是交換數組中的鍵值和鍵名:

 ?phpprint_r(array_keys($array));// [ sky , grass , orange ]print_r(array_values($array));// [ blue , green , orange ]print_r(array_flip($array));// Array// [blue] = sky// [green] = grass// [orange] = orange// )
簡化代碼

list() 函數,確切的說它不是一個函數,而是一種語言結構,可以在單次操作中將數組中的值賦值給一組變量。舉個例子,下面給出 list() 函數的基本使用:

 ?php// 定義數組$array = [ a , b , c // 不使用 list()$a = $array[0];$b = $array[1];$c = $array[2];// 使用 list() 函數list($a, $b, $c) = $array;

這個語言結構結合 preg_split() 或 explode() 這類函數使用效果更佳,如果你無需定義其中的某些值,可以直接跳過一些參數的賦值:

$string = hello|wild|world list($hello, , $world) = explode( | , $string);echo $hello, , $world;

另外,list() 還可用于 foreach 遍歷,這種用法更能發揮這個語言結構的優勢:

$arrays = [[1, 2], [3, 4], [5, 6]];foreach ($arrays as list($a, $b)) { $c = $a + $b; echo $c, , }
譯者注:list() 語言結構僅適用于數字索引數組,并默認索引從 0 開始,且無法用于關聯數組,查看 文檔。

而通過使用 extract() 函數,你可以將關聯數組導出到變量(符號表)中。對數組中的各個元素,將會以其鍵名作為變量名創建,變量的值則為對應元素的值:

 ?php$array = [ clothes = t-shirt , size = medium , color = blue ,extract($array);echo $clothes, , $size, , $color;

注意在處理用戶數據(如請求的數據)時 extract() 函數是一個安全的函數,所以此時最好使用更好的 標志類型 如 EXTR_IF_EXISTS 和 EXTR_PREFIX_ALL。

extract() 函數的逆操作是 compact() 函數,用于通過變量名創建關聯數組:

 ?php$clothes = t-shirt $size = medium $color = blue $array = compact( clothes , size , color print_r($array);// Array// [clothes] = t-shirt// [size] = medium// [color] = blue// )
過濾函數

PHP 提供一個用于過濾數組的超贊的函數,它是 array_filter()。將待處理數組作為函數的第一個參數,第二個參數是一個匿名函數。如果你希望數組中的元素通過驗證則在匿名函數返回 true,否則返回 false:

 ?php$numbers = [20, -3, 50, -99, 55];$positive = array_filter($numbers, function ($number) { return $number print_r($positive);// [0 = 20, 2 = 50, 4 = 55]

函數不僅支持通過值過濾。你還可以使用 ARRAY_FILTER_USE_KEY 或 ARRAY_FILTER_USE_BOTH 作為第三參數指定是否將數組的鍵值或將鍵值和鍵名同時作為回調函數的參數。

你還可以不在 array_filter() 函數中定義回調函數以刪除空值:

 ?php$numbers = [-1, 0, 1];$not_empty = array_filter($numbers);print_r($not_empty);// [0 = -1, 2 = 1]

你可以使用 array_unique() 函數用于從數組中獲取唯一值元素。注意該函數會保留唯一元素在原數組中的鍵名:

 ?php$array = [1, 1, 1, 1, 2, 2, 2, 3, 4, 5, 5];$uniques = array_unique($array);print_r($uniques);print_r($array);// Array// [0] = 1// [4] = 2// [7] = 3// [8] = 4// [9] = 5// )

array_column() 函數可以從多維數組(multi-dimensional)中獲取指定列的值,如從 SQL 數據庫中獲取答案或者 CSV 文件導入數據。只需要傳入數組和指定的列名:

 ?php$array = [ [ id = 1, title = tree ], [ id = 2, title = sun ], [ id = 3, title = cloud ],$ids = array_column($array, id print_r($ids);// [1, 2, 3]

從 PHP 7 開始,array_column 功能更加強大,因為它開始支持 包含對象的數組,所以在處理數組模型時變得更加容易:

 ?php$cinemas = Cinema::find()- all();$cinema_ids = array_column($cinemas, id // php7 forever!
數組遍歷處理

通過使用 array_map(),你可以對數組中的每個元素執行回調方法。你可以基于給定的數組傳入函數名稱或匿名函數來獲取一個新數組:

 ?php$cities = [ Berlin , KYIV , Amsterdam , Riga $aliases = array_map( strtolower , $cities);print_r($aliases);// [ berlin , kyiv, amsterdam , riga ]$numbers = [1, -2, 3, -4, 5];$squares = array_map(function ($number) { return $number ** 2;}, $numbers);print_r($squares);// [1, 4, 9, 16, 25]

對于這個函數還有個謠言,無法同時將數組的鍵名和鍵值傳入到回調函數,但是我們現在要來打破它:

 ?php$model = [ id = 7, name = James $res = array_map(function ($key, $value) { return $key . is . $value;}, array_keys($model), $model);print_r($res);// Array// [0] = id is 7// [1] = name is James// )

不過這樣處理起來實在是丑陋。最好使用 array_walk() 函數來替代。這個函數表現上和 array_map() 類似,但是工作原理完全不同。第一,數組是以引用傳值方式傳入,所以 array_walk() 不會創建新數組,而是直接修改原數組。所以作為源數組,你可以將數組的值以引用傳遞方法傳入回調函數,數組的鍵名直接傳入就好了:

 ?php$fruits = [ banana = yellow , apple = green , orange = orange ,array_walk($fruits, function ( $value, $key) { $value = $key . is . $value;print_r($fruits);
數組連接操作

在 PHP 中合并數組的最佳方式是使用 array_merge() 函數。所有的數組選項會合并到一個數組中,具有相同鍵名的值會被最后一個值所覆蓋:

 ?php$array1 = [ a = a , b = b , c = c $array2 = [ a = A , b = B , D = D $merge = array_merge($array1, $array2);print_r($merge);// Array// [a] = A// [b] = B// [c] = c// [D] = D// )
譯注:有關合并數組操作還有一個「+」號運算符,它和 array_merge() 函數的功能類似都可以完成合并數組運算,但是結果有所不同,可以查看 PHP 合并數組運算符 + 與 array_merge 函數 了解更多細節。

為了實現從數組中刪除不在其他數組中的值(譯注:計算差值),使用 array_diff()。還可以通過 array_intersect() 函數獲取所有數組都存在的值(譯注:獲取交集)。接下來的示例演示它們的使用方法:

 ?php$array1 = [1, 2, 3, 4];$array2 = [3, 4, 5, 6];$diff = array_diff($array1, $array2);$intersect = array_intersect($array1, $array2);print_r($diff); // 差集 [0 = 1, 1 = 2]print_r($intersect); //交集 [2 = 3, 3 = 4]
數組的數學運算

使用 array_sum() 對數組元素進行求和運算,array_product 對數組元素執行乘積運算,或者使用 array_reduce() 處理自定義運算規則:

 ?php$numbers = [1, 2, 3, 4, 5];print_r(array_sum($numbers));// 15print_r(array_product($numbers));// 120print_r(array_reduce($numbers, function ($carry, $item) { return $$carry ? $carry / $item : 1;}));// 0.0083 = 1/2/3/4/5

為了實現統計數組中值的出現次數,可以使用 array_count_values() 函數。它將返回一個新數組,新數組鍵名為待統計數組的值,新數組的值為待統計數組值的出現次數:

 ?php$things = [ apple , apple , banana , tree , tree , tree $values = array_count_values($things);print_r($values);// Array// [apple] = 2// [banana] = 1// [tree] = 3// )
生成數組

需要以給定值生成固定長度的數組,可以使用 array_fill() 函數:

 ?php$bind = array_fill(0, 5, ? print_r($bind);

根據范圍創建數組,如小時或字母,可以使用 range() 函數:

 ?php$letters = range( a , z print_r($letters); // [ a , b , ..., z ]$hours = range(0, 23);print_r($hours); // [0, 1, 2, ..., 23]

為了實現獲取數組中的部分元素 - 比如,獲取前三個元素 - 使用 array_slice() 函數:

 ?php$numbers = range(1, 10);$top = array_slice($numbers, 0, 3);print_r($top);// [1, 2, 3]
排序數組

首先謹記 PHP 中有關排序的函數都是 引用傳值 的,排序成功返回 true 排序失敗返回 false。排序的基礎函數是 sort() 函數,它執行排序后的結果不會保留原索引順序。排序函數可以歸類為以下幾類:

a 保持索引關系進行排序

k 依據鍵名排序

r 對數組進行逆向排序

u 使用用戶自定義排序規則排序

你可以從下表看到這些排序函數:


akruaasort
arsortuasortk
ksortkrsort
rarsortkrsortrsort
uuasort

usort數組函數的組合使用

數組處理的藝術是組合使用這些數組函數。這里我們通過 array_filter() 和 array_map() 函數僅需一行代碼就可以完成空字符截取和去控制處理:

 ?php$values = [ say , bye , , to , spaces , $words = array_filter(array_map( trim , $values));print_r($words);// [ say , bye , to , spaces ]

依據模型數組創建 id 和 title 數據字典,我們可以結合使用 array_combine() 和 array_column() 函數:

 ?php$models = [$model, $model, $model];$id_to_title = array_combine( array_column($models, id ), array_column($models, title )print_r($id_to_title);
譯注:提供一個 可運行的版本。

為了實現獲取出現頻率最高的數組元素,我們可以使用 array_count_values()、arsort() 和 array_slice() 這幾個函數:

 ?php$letters = [ a , a , a , a , b , b , c , d , d , d , d , d $values = array_count_values($letters);arsort($values);$top = array_slice($values, 0, 3);print_r($top);

還可以輕易的通過 array_sum() 和 array_map() 函數僅需數行就能完成計算訂單的價格:

 ?php$order = [ [ product_id = 1, price = 99, count = 1], [ product_id = 2, price = 50, count = 2], [ product_id = 2, price = 17, count = 3],$sum = array_sum(array_map(function ($product_row) { return $product_row[ price ] * $product_row[ count }, $order));print_r($sum);// 250
總結

正如你所看到的那樣,掌握主要的數組函數可以是我們的代碼更精簡且易于閱讀。當然,PHP 提供了比列出來的要多得多的數組函數,并且還提供了額外參數及標識參數,但是我覺得本教程中已經涵蓋了 PHP 開發者應該掌握的最基本的一些。

以上就是本文的全部內容,希望對大家的學習有所幫助,更多相關內容請關注PHP !

相關推薦:

PHP緩存區ob的介紹

為多個PHP-FPM容器量身打造單一Nginx鏡像的方法

以上就是PHP數組的使用方法的詳細內容,PHP教程

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美视频专区一二在线观看| 国产91成人在在线播放| 亚洲精品日韩激情在线电影| 国产精品免费久久久久久| 欧美大成色www永久网站婷| 日韩av有码在线| 国产亚洲综合久久| 国产精品免费福利| 国产精品精品视频| 久久久久999| 91经典在线视频| 欧美极品美女视频网站在线观看免费| 日韩在线观看精品| 中文字幕免费精品一区高清| 亚洲欧美国产va在线影院| 亚洲毛片在线免费观看| 亚洲精品日韩激情在线电影| 欧美激情欧美激情在线五月| 在线观看日韩视频| 精品视频在线播放色网色视频| 91国产美女在线观看| 亚洲精品自产拍| 国产精品91免费在线| 亚洲欧洲日产国码av系列天堂| 欧美裸体xxxx极品少妇软件| 操日韩av在线电影| 国产一区二区激情| 亚洲欧美国产日韩天堂区| 日本成人黄色片| 国产亚洲a∨片在线观看| 久久久久久久久久国产| 亚洲精品久久久久久久久久久久久| 亚洲免费中文字幕| 一区二区三区视频观看| 亚洲高清免费观看高清完整版| 国产在线拍揄自揄视频不卡99| 国产丝袜一区二区三区免费视频| 成人有码在线视频| 亚洲精品videossex少妇| 精品国产区一区二区三区在线观看| 久久久久久一区二区三区| 亚洲精品720p| 亚洲免费视频一区二区| 精品视频一区在线视频| 日韩中文字幕av| 神马国产精品影院av| 日韩在线观看网站| 亚洲天堂成人在线视频| 国产精品久久久久久亚洲调教| 精品无人区太爽高潮在线播放| 美女精品久久久| 成人黄在线观看| 久久精品电影网| 亚洲第一精品夜夜躁人人躁| 国产成人a亚洲精品| 疯狂蹂躏欧美一区二区精品| 久久91亚洲精品中文字幕| 在线观看日韩欧美| 国产偷亚洲偷欧美偷精品| 欧美黑人狂野猛交老妇| 国产精品pans私拍| 青青草国产精品一区二区| 精品五月天久久| 亚洲国产精品久久久久秋霞不卡| 亚洲片国产一区一级在线观看| 亚洲第一免费网站| 久久精品久久久久电影| 成人激情视频免费在线| 国产成人精品在线视频| 欧美激情精品久久久久久免费印度| 中文字幕在线看视频国产欧美在线看完整| 国产精品吊钟奶在线| 亚洲伊人第一页| 亚州欧美日韩中文视频| 最好看的2019的中文字幕视频| 中文字幕亚洲二区| 成人激情综合网| 岛国精品视频在线播放| 日韩电影大全免费观看2023年上| 揄拍成人国产精品视频| 少妇高潮久久久久久潘金莲| 69久久夜色精品国产7777| 91在线观看免费高清完整版在线观看| 97视频免费在线看| 中文字幕国产亚洲| 欧美裸体xxxx极品少妇| 国产精品久久久久久久久久ktv| 91精品91久久久久久| 欧美精品videos| 秋霞成人午夜鲁丝一区二区三区| 亚洲欧洲成视频免费观看| 日韩精品免费看| 亚洲综合精品一区二区| 久久久精品国产网站| 欧美日韩999| 中文亚洲视频在线| 欧美丝袜第一区| 国产精品草莓在线免费观看| 日韩欧美亚洲成人| 91久久精品美女高潮| 欧美成人一二三| 91精品国产免费久久久久久| 一个人www欧美| 国产精品流白浆视频| 久久综合九色九九| 成人免费午夜电影| 成人午夜在线影院| 亚洲片在线观看| 日韩经典中文字幕在线观看| 精品伊人久久97| 亚洲天堂开心观看| yw.139尤物在线精品视频| 色综合色综合网色综合| 夜夜狂射影院欧美极品| 久久久久久久久网站| 中文字幕日本欧美| www.日本久久久久com.| 91精品久久久久久综合乱菊| 一区二区三区视频免费| 91av在线不卡| 欧美国产日韩免费| 亚洲国产精品嫩草影院久久| 亚洲第一综合天堂另类专| 国产偷国产偷亚洲清高网站| 日韩精品久久久久| 国产精品免费一区| 亚洲在线第一页| 成人444kkkk在线观看| 日本中文字幕成人| 亚洲精品国产精品国产自| 久久久精品网站| 亚洲女成人图区| 最近中文字幕mv在线一区二区三区四区| 国产精品欧美一区二区三区奶水| 亚洲欧美制服另类日韩| 日韩女优人人人人射在线视频| 国产精品电影一区| 国产一区私人高清影院| 欧美精品一区二区三区国产精品| 中文字幕欧美亚洲| 久久99久久亚洲国产| 国产91在线播放| 色综合91久久精品中文字幕| 亚洲r级在线观看| 日韩色av导航| 久久久精品一区二区| 欧美亚洲一区在线| 国产精品视频久久久| 亚洲黄色av网站| 91久热免费在线视频| 啊v视频在线一区二区三区| 日韩av色综合| 国产精品pans私拍| 日韩av在线网| 久久久999成人| 自拍亚洲一区欧美另类| 最近更新的2019中文字幕| 亚洲天天在线日亚洲洲精| 不卡av电影院| 国产午夜精品一区理论片飘花| 欧美老少做受xxxx高潮| 亚洲第一网中文字幕| 日韩专区在线观看| 91国内免费在线视频|