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)
直接访问在内存位置存储位置的一种数据