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-学习资源