• 【php学习】数组操作


    1、json字符串和数组之间的转换

       json_decode($jsonStr)      json字符串解码为php变量,若第二个参数默认为false,返回一个对象;若第二个参数设置true,则返回一个数组

     json_encode($arr)         将php数组编码为json字符串

     json_encode($arr, JSON_UNESCAPED_UNICODE)   将php数组中的中文正常编码为json字符串

    //$jsonStr中的key和value必须被双引号包裹,否则返回null
    $jsonStr = '{"name":"张三", "age":"15", "addr":"北京"}';
    $obj = json_decode($jsonStr);
    $arr = json_decode($jsonStr, true);    
    var_dump_br($obj);
    var_dump_br($arr);
        
    $jsonStr = json_encode($arr);
    var_dump_br($jsonStr);

    打印结果

    object(stdClass)#1 (3) { ["name"]=> string(6) "张三" ["age"]=> string(2) "15" ["addr"]=> string(6) "北京" } 
    array(3) { ["name"]=> string(6) "张三" ["age"]=> string(2) "15" ["addr"]=> string(6) "北京" } 
    string(56) "{"name":"u5f20u4e09","age":"15","addr":"u5317u4eac"}" 

    2、数组操作的基本函数
       array_values($arr)   返回数组内所有的value,返回类型是数组

       array_keys($arr)    返回数组内所有的key,返回类型是数组

       array_flip($arr)    数组中的值与键名互换(如果有重复,后者覆盖前者)

       in_array($val$arr)   判断value(可以是数组类型)是否存在于数组中

       array_key_exists($key$arr)   判断key是否存在数组中(更重要的是,它对对象也有用

       array_search($val, $arr)     返回value在数组中对应的key

      

     1     $xiaocheng = array("name"=>"小程", "job"=>"php工程师");
     2     $arr = array("person"=> $xiaocheng, "company"=>"xxx信息技术有限公司");
     3     
     4     $arrValues = array_values($arr);//所有value
     5     $arrKeys = array_keys($arr);    //所有key
     6     var_dump_br($arrValues);
     7     var_dump_br($arrKeys);
     8     
     9     $new_arr = array_flip($arr);    //key和value互换,只能互换string和integer的值。
    10     var_dump_br($new_arr);
    11     $new_xiao_cheng = array_flip($xiaocheng);
    12     var_dump_br($new_xiao_cheng);
    13     
    14     
    15     $exist_value = in_array($xiaocheng, $arr);    //判断value是否存在数组中
    16     var_dump_br($exist_value);
    17     $exist_value = in_array("php工程师", $arr);    //不能深层次判断
    18     var_dump_br($exist_value);
    19     
    20     $exist_key = array_key_exists("person", $arr);    //判断key是否存在数组中
    21     var_dump_br($exist_key);
    22     
    23     $key = array_search($xiaocheng, $arr);    //返回value在数组中的key
    24     var_dump_br($key);

    打印结果

     1     array(2) { [0]=> array(2) { ["name"]=> string(6) "小程" ["job"]=> string(12) "php工程师" } [1]=> string(27) "xxx信息技术有限公司" } 
     2     array(2) { [0]=> string(6) "person" [1]=> string(7) "company" } 
     3 
     4     Warning: array_flip() [function.array-flip]: Can only flip STRING and INTEGER values! in D:appphpstudy2014WWW	est	estArray.php on line 26
     5     array(1) { ["xxx信息技术有限公司"]=> string(7) "company" } 
     6     array(2) { ["小程"]=> string(4) "name" ["php工程师"]=> string(3) "job" } 
     7     bool(true) 
     8     bool(false) 
     9     bool(true) 
    10     string(6) "person" 

    向数组中添加元素

      array_push($arr, $var) 在数组末尾添加,还可以直接 $arr[] = $var;

      array_unshift($arr, $var) 在数组开头添加

      从数组中取出元素

      array_pop($arr) 从数组末尾取出并删除

      array_shift($arr) 从数组开头取出并删除

    3、数组排序

      sort($arr, [$flag])   数组元素从低到高排列

       rsort($arr, [$flag])  数组元素从高到低排列

    4、数组间的函数

      

      数组的差集(上图绿色部分或灰色部分)
      array_diff($arr1,$arr2);  返回差集结果数组(注:如果参数$arr2在前,那么就表示灰色部分;$arr1在前就表示绿色部分)
      array_diff_assoc($arr1,$arr2,$arr3);  返回差集结果数组,键名也做比较

      数组的交集(上图红色部分)
      array_intersect($arr1,$arr2);返回交集结果数组
      array_intersect_assoc($arr1,$arr2);返回交集结果数组,键名也做比较

      数组的合集(上图绿色+红色+灰色)

      array_merge($arr1, $arr2)

      

    更多php数组的介绍,请看 http://www.cnblogs.com/lhat/p/5882431.html

  • 相关阅读:
    Nginx源码编译安装与负载均衡配置实践
    jquery_file_upload in Rails(ajax实现多张图片上传)
    Nokogiri相关网站
    rails中 url和path的区别
    Unique Paths
    Kinect for windows的脸部识别
    .Net给图片添加水印效果
    大型高性能ASP.NET系统架构设计
    如何来提高网站的访问速度,其中包括服务器的配置建议,asp.NET代码的编写及前端页面的优化等等
    URL中#号(井号)的作用
  • 原文地址:https://www.cnblogs.com/lhat/p/5378735.html
Copyright © 2020-2023  润新知