PHP 支持簡單數組和多維數組,數組可由用戶自己創建也可以由其它函數創建。有很多特殊的數據庫處理函數可以從數據庫查詢中返回數組以及一些返回數組的函數。
這些函數允許你通過不同的方式來使用和操作數組。數組是存儲、管理和操作變量組的必不可少的工具。
PHP 中的數組實際上是一個有序映射。映射是一種把 *values* 關聯到 *keys* 的類型。此類型在很多方面做了優化,因此可以把它當成真正的數組,或列表(向量),散列表(是映射的一種實現),字典,集合,棧,隊列以及更多可能性。由于數組元素的值也可以是另一個數組,樹形結構和多維數組也是允許的。
[[官方文檔-Array數組]](http://php.net/manual/zh/language.types.array.php)
[TOC]
## 數組 函數 (81個)
### 1. array_change_key_case — 將數組中的所有鍵名修改為全大寫或小寫
### 2. array_chunk — 將一個數組分割成多個
### 3. array_column — 返回數組中指定的一列
### 4. array_combine — 創建一個數組,用一個數組的值作為其鍵名,另一個數組的值作為其值
### 5. array_count_values — 統計數組中所有的值
### 6. array_diff_assoc — 帶索引檢查計算數組的差集
### 7. array_diff_key — 使用鍵名比較計算數組的差集
### 8. array_diff_uassoc — 用用戶提供的回調函數做索引檢查來計算數組的差集
### 9. array_diff_ukey — 用回調函數對鍵名比較計算數組的差集
### 10. array_diff — 計算數組的差集
### 11. array_fill_keys — 使用指定的鍵和值填充數組
### 12. array_fill — 用給定的值填充數組
### 13. array_filter — 用回調函數過濾數組中的單元
### 14. array_flip — 交換數組中的鍵和值
### 15. array_intersect_assoc — 帶索引檢查計算數組的交集
### 16. array_intersect_key — 使用鍵名比較計算數組的交集
### 17. array_intersect_uassoc — 帶索引檢查計算數組的交集,用回調函數比較索引
### 18. array_intersect_ukey — 用回調函數比較鍵名來計算數組的交集
### 19. array_intersect — 計算數組的交集
### 20. array_key_exists — 檢查數組里是否有指定的鍵名或索引
### 21. array_key_first — Gets the first key of an array
### 22. array_key_last — Gets the last key of an array
### 23. array_keys — 返回數組中部分的或所有的鍵名
### 24. array_map — 為數組的每個元素應用回調函數
### 25. array_merge_recursive — 遞歸地合并一個或多個數組
### 26. array_merge — 合并一個或多個數組
### 27. array_multisort — 對多個數組或多維數組進行排序
### 28. array_pad — 以指定長度將一個值填充進數組
### 29. array_pop — 彈出數組最后一個單元(出棧)
### 30. array_product — 計算數組中所有值的乘積
### 31. array_push — 將一個或多個單元壓入數組的末尾(入棧)
### 32. array_rand — 從數組中隨機取出一個或多個單元
### 33. array_reduce — 用回調函數迭代地將數組簡化為單一的值
### 34. array_replace_recursive — 使用傳遞的數組遞歸替換第一個數組的元素
### 35. array_replace — 使用傳遞的數組替換第一個數組的元素
### 36. array_reverse — 返回單元順序相反的數組
### 37. array_search — 在數組中搜索給定的值,如果成功則返回首個相應的鍵名
### 38. array_shift — 將數組開頭的單元移出數組
### 39. array_slice — 從數組中取出一段
### 40. array_splice — 去掉數組中的某一部分并用其它值取代
### 41. array_sum — 對數組中所有值求和
### 42. array_udiff_assoc — 帶索引檢查計算數組的差集,用回調函數比較數據
### 43. array_udiff_uassoc — 帶索引檢查計算數組的差集,用回調函數比較數據和索引
### 44. array_udiff — 用回調函數比較數據來計算數組的差集
### 45. array_uintersect_assoc — 帶索引檢查計算數組的交集,用回調函數比較數據
### 46. array_uintersect_uassoc — 帶索引檢查計算數組的交集,用單獨的回調函數比較數據和索引
### 47. array_uintersect — 計算數組的交集,用回調函數比較數據
### 48. array_unique — 移除數組中重復的值
### 49. array_unshift — 在數組開頭插入一個或多個單元
### 50. array_values — 返回數組中所有的值
### 51. array_walk_recursive — 對數組中的每個成員遞歸地應用用戶函數
### 52. array_walk — 使用用戶自定義函數對數組中的每個元素做回調處理
### 53. array — 新建一個數組
### 54. arsort — 對數組進行逆向排序并保持索引關系
### 55. asort — 對數組進行排序并保持索引關系
### 56. compact — 建立一個數組,包括變量名和它們的值
### 57. count — 計算數組中的單元數目,或對象中的屬性個數
### 58. current — 返回數組中的當前單元
### 59. each — 返回數組中當前的鍵/值對并將數組指針向前移動一步
### 60. end — 將數組的內部指針指向最后一個單元
### 61. extract — 從數組中將變量導入到當前的符號表
### 62. in_array — 檢查數組中是否存在某個值
### 63. key_exists — 別名 array_key_exists
### 64. key — 從關聯數組中取得鍵名
### 65. krsort — 對數組按照鍵名逆向排序
### 66. ksort — 對數組按照鍵名排序
### 67. list — 把數組中的值賦給一組變量
### 68. natcasesort — 用“自然排序”算法對數組進行不區分大小寫字母的排序
### 69. natsort — 用“自然排序”算法對數組排序
### 70. next — 將數組中的內部指針向前移動一位
### 71. pos — current 的別名
### 72. prev — 將數組的內部指針倒回一位
### 73. range — 根據范圍創建數組,包含指定的元素
### 74. reset — 將數組的內部指針指向第一個單元
### 75. rsort — 對數組逆向排序
### 76. shuffle — 打亂數組
### 77. sizeof — count 的別名
### 78. sort — 對數組排序
### 79. uasort — 使用用戶自定義的比較函數對數組中的值進行排序并保持索引關聯
### 80. uksort — 使用用戶自定義的比較函數對數組中的鍵名進行排序
### 81. usort — 使用用戶自定義的比較函數對數組中的值進行排序
### 1.1
ttt
### 1.2 數組函數
數組函數是 PHP 核心的一部分。
#### array_merge :合并一個或多個數組
(PHP 4, PHP 5, PHP 7)
~~~php
array array_merge ( array $array1 [, array $... ] )
~~~
將一個或多個數組的單元合并起來,一個數組中的值附加在前一個數組的后面。返回作為結果的數組。 如果輸入的數組中有相同的字符串鍵名,則該鍵名后面的值將覆蓋前一個值。然而,如果數組包含數字鍵名,后面的值將不會覆蓋原來的值,而是附加到后面。
如果只給了一個數組并且該數組是數字索引的,則鍵名會以連續方式重新索引。
* Example #1 合并數字索引的數組
~~~php
<?php
$array1 = array();
$array2 = array(1 => "data");
$result = array_merge($array1, $array2);
?>
~~~
數字鍵名將會被重新編號!結果:
~~~php
Array
(
[0] => data
)
~~~
* Example #2 合并非數組的類型
~~~php
<?php
$beginning = 'foo';
$end = array(1 => 'bar');
$result = array_merge((array)$beginning, (array)$end);
print_r($result);
?>
~~~
以上例程會輸出:
~~~php
Array
(
[0] => foo
[1] => bar
)
~~~
* Example #3 如果你想完全保留原有數組并只想新的數組附加到后面,用 + 運算符:
~~~php
<?php
$array1 = array(0 => 'zero_a', 2 => 'two_a', 3 => 'three_a');
$array2 = array(1 => 'one_b', 3 => 'three_b', 4 => 'four_b');
$result = $array1 + $array2;
var_dump($result);
?>
~~~
第一個數組的鍵名將會被保留。在兩個數組中存在相同的鍵名時,第一個數組中的同鍵名的元素將會被保留,第二個數組中的元素將會被忽略
~~~php
array(5) {
[0]=>
string(6) "zero_a"
[2]=>
string(5) "two_a"
[3]=>
string(7) "three_a"
[1]=>
string(5) "one_b"
[4]=>
string(6) "four_b"
}
~~~
#### in_array:檢查數組中是否存在某個值
(PHP 4, PHP 5, PHP 7)
- 函數定義
`bool in_array ( mixed $needle , array $haystack [, bool $strict = FALSE ] )`
大海撈針,在大海(haystack)中搜索針( needle),如果沒有設置 strict 則使用寬松的比較。
- 參數
`needle`:待搜索的值。
Note:如果 needle 是字符串,則比較是區分大小寫的。
`haystack`:待搜索的數組。
`strict`:如果第三個參數 strict 的值為 `TRUE` 則 in_array() 函數還會檢查 needle 的類型是否和 haystack 中的相同。
- 返回值
如果找到 needle 則返回 `TRUE`,否則返回 `FALSE`。
#### array_key_exists:檢查數組里是否有指定的鍵名或索引
(PHP 4 >= 4.0.7, PHP 5, PHP 7)
- 函數定義
`bool array_key_exists ( mixed $key , array $array )`
數組里有鍵 key 時,array_key_exists() 返回`TRUE`。 key 可以是任何能作為數組索引的值。
- 參數
`key`:要檢查的鍵。
`array`:一個數組,包含待檢查的鍵。
- 返回值
成功時返回 `TRUE`, 或者在失敗時返回 `FALSE`。
Note:array_key_exists() 僅僅搜索第一維的鍵。 多維數組里嵌套的鍵不會被搜索到。
#### array_intersect :得到數組交集
(PHP 4 >= 4.0.1, PHP 5, PHP 7)
- 函數定義
`array array_intersect ( array $array1 , array $array2 [, array $... ] )`
- 參數
`array1`:要檢查的數組,作為主值。
`array2`:要被對比的數組。
`...`:要對比的數組列表。
- 返回值
返回一個數組,該數組包含了所有在 array1 中也同時出現在所有其它參數數組中的值。
~~~php
$orderArr=[100,4,101,128,129];
$searchArr=[4,100,128];
$arr=array_intersect($orderArr,$searchArr);
//$arr=['0'=>100,'1'=>4,'3'=>128]
//重組$arr下標,保證$arr的下標是連續
$arr=array_values($arr);
//$arr=[100,4,128]
~~~
- WebAPP
- Linux Command
- 入門
- 處理文件
- 查找文件單詞
- 環境
- 聯網
- Linux
- Linux目錄配置標準:FHS
- Linux文件與目錄管理
- Linux賬號管理與ACL權限設置
- Linux系統資源查看
- 軟件包管理
- Bash
- Daemon/Systemd
- ftp
- Apache
- MySQL
- Command
- Replication
- mysqld
- remote access
- remark
- 限制
- PHP
- String
- Array
- Function
- Class
- File
- JAVA
- Protocals
- http
- mqtt
- IDE
- phpDesigner
- eclipse
- vscode
- Notepad++
- WebAPI
- Javasript
- DOM
- BOM
- Event
- Class
- Module
- Ajax
- Fetch
- Promise
- async/await
- Statements and declarations
- Function
- Framwork
- jQurey
- Types
- Promise
- BootStrap
- v4
- ThinkPHP5
- install
- 定時任務
- CodeIgniter
- React.js
- node.js
- npm
- npm-commands
- npm-folder
- package.json
- Docker and private modules
- module
- webpack.js
- install
- configuration
- package.json
- entry
- modules
- plugins
- Code Splitting
- loaders
- libs
- API
- webpack-cli
- Vue.js
- install
- Compile
- VueAPI
- vuex
- vue-router
- vue-devtools
- vue-cli
- vue-loader
- VDOM
- vue-instance
- components
- template
- Single-File Components
- props
- data
- methods
- computed
- watch
- Event-handling
- Render Func
- remark
- 案例學習
- bootstrap-vue
- modal
- fontAwesome
- Hosting Font Awesome Yourself
- using with jquery
- using with Vue.js
- HTML
- CSS
- plugins
- Chart.js
- D3.js
- phpSpreadSheet
- Guzzle
- Cmder
- Git
- git命令
- git流程
- Postman
- Markdown
- Regular Expressions
- PowerDesigner
- 附錄1-學習資源