zoukankan      html  css  js  c++  java
  • 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)
    直接访问在内存位置存储位置的一种数据

  • 相关阅读:
    九.Protobuf3特殊类型
    八.Protobuf3更新消息类型(添加新的字段)
    七.Protobuf3 嵌套类型
    六.Protobuf3引入其他.proto文件
    五.Protobuf3 枚举
    四.Protobuf3 缺省值
    VC 在调用main函数之前的操作
    Windows下的代码注入
    C 堆内存管理
    VC++ 崩溃处理以及打印调用堆栈
  • 原文地址:https://www.cnblogs.com/weizaiyes/p/8142658.html
Copyright © 2011-2022 走看看