PHP数组

php数组

数组的基本

  • 数组的基本使用(定义,遍历,类型转换)
  • PHP数组的内部数据结构
  • 数组元素的查找 删除 过滤 排序
  • 数组转换为字符串的方式

数组的扩展学习

  • PHP位运算
  • PHP预定义数组(预定义变量)
  • PHP输入流 php://input
  • 数组实现数据的应用和练习(链表 队列)

数组元素的删除

数组unset之后 不会重建索引
unset($array[$key1]);

PHP变量类型

标量类型:boolean integer float(double) string
复合类型:array object
特殊类型:resource null

数组遍历

for foreach array_map array_walk while

foreach遍历数组

  • 打印顺序为初始化的顺序
$arr = array(1,2,3);
foreach($arr as &$v){}
foreach($arr as $v){
  echo $v;
}

如何杜绝foreach的引用隐患
最后一个元素的$value引用循环会会保留 建议unset删除
unset($v)

数组的内部实现

1.HashTable bucket
2.HashTable用于保存整个数组需要的信息 Bucket保存具体内容

位运算

判断int型变量a是奇数还是偶数 a&1 = 0 偶数 a&1 = 1 奇数

数组转化为字符串

1.序列化
Api接口通信
数据缓存
数组数据持久化(保存到数据库中)

2.序列化的方法
serialize()
json_encode()
var_exports($items,true)
xml
mcpack
protobuffer

合并两个数组

+或者array_merge
array_merge :覆盖,相同数字键追加。
+运算符:补充,相同数字键忽略。

PHP数组元素查找

判断key是否存在:array_key_exist() isset()

判断值是否存在: in_array() array_search()

依据键返回值: $items[$key]
依据值返回键: array_keys ($items,$value);

依据给定值进行模糊查找:preg_grep();
PHP函数preg_grep()返回一个数组,其中包括了$input数组中与给定的$pattern模式相匹配的单元。对于输入数组$input中的每个元素,preg_grep()也只进行一次匹配

数组元素的过滤和删除

1.unset
2.array_slice()从数组中取出一段 array_slice(array,start,length,preserve)
3.array_splice把数组中的一部分去掉并用其它值取代 array_splice(array,start,length,array)
4.array_filter 过滤元素
5.array_shift 移除开头元素
6.array_pop 将最后一个元素弹出

与数组有关的函数

count
is_array
print_r
explode
implode(join)
extract 从数组中将变量导入到当前的符号表
http_build_query 生成 URL-encode 之后的请求字符串
parse_str

数组函数分类

数组遍历相关函数:如prev, next, current, end,reset, each等
数组排序相关:如sort, rsort, asort, arsort, ksort, krsort, uasort, uksort
数组查找相关: 如in_array, array_search, array_key_exists等
数组分割、合并相关: array_slice, array_splice, implode, array_chunk, array_combine等
数组交并差:如array_merge, array_diff, array_diff_, array_intersect, array_intersect_
作为stack/queue容器的数组: 如array_push, array_pop, array_shift
其他的数组操作:array_fill, array_flip, array_sum, array_reverse等

PHP预定义变量

$GLOBALS — 引用全局作用域中可用的全部变量
$_SERVER — 服务器和执行环境信息
$_GET — HTTP GET 变量
$_POST — HTTP POST 变量
$_FILES — HTTP 文件上传变量
$_REQUEST — HTTP Request 变量
$_SESSION — Session 变量
$_ENV — 环境变量
$_COOKIE — HTTP Cookies

输入流

$_POST VS php://input
1.仅在取值为application/x-www-data-urlencoded和multipart/form-data时,php会将http请求body相应数据会填入到数组$_POST,填入到$_POST数组中的数据是进行urldecode()解析的结果。
2.只要Content-Type不为multipart/form-data, php://input会填入post数据。
3.仅当Content-Type为application/x-www-form-urlencoded且提交方法是POST方法时,$_POST数据与php://input数据才是一致的。

哈希表

HashTable
根据关键字(Key Value)
直接访问在内存位置存储位置的一种数据

posted @ 2017-12-29 08:42  WWSASUKE  阅读(144)  评论(0编辑  收藏  举报