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":"\u5f20\u4e09","age":"15","addr":"\u5317\u4eac"}"

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

  

     $xiaocheng = array("name"=>"小程", "job"=>"php工程师");
$arr = array("person"=> $xiaocheng, "company"=>"xxx信息技术有限公司"); $arrValues = array_values($arr);//所有value
$arrKeys = array_keys($arr); //所有key
var_dump_br($arrValues);
var_dump_br($arrKeys); $new_arr = array_flip($arr); //key和value互换,只能互换string和integer的值。
var_dump_br($new_arr);
$new_xiao_cheng = array_flip($xiaocheng);
var_dump_br($new_xiao_cheng); $exist_value = in_array($xiaocheng, $arr); //判断value是否存在数组中
var_dump_br($exist_value);
$exist_value = in_array("php工程师", $arr); //不能深层次判断
var_dump_br($exist_value); $exist_key = array_key_exists("person", $arr); //判断key是否存在数组中
var_dump_br($exist_key); $key = array_search($xiaocheng, $arr); //返回value在数组中的key
var_dump_br($key);

打印结果

     array(2) { [0]=> array(2) { ["name"]=> string(6) "小程" ["job"]=> string(12) "php工程师" } [1]=> string(27) "xxx信息技术有限公司" }
array(2) { [0]=> string(6) "person" [1]=> string(7) "company" } Warning: array_flip() [function.array-flip]: Can only flip STRING and INTEGER values! in D:\app\phpstudy2014\WWW\test\testArray.php on line 26
array(1) { ["xxx信息技术有限公司"]=> string(7) "company" }
array(2) { ["小程"]=> string(4) "name" ["php工程师"]=> string(3) "job" }
bool(true)
bool(false)
bool(true)
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

【php学习】数组操作的更多相关文章

  1. RX学习笔记:JavaScript数组操作

    RX学习笔记:JavaScript数组操作 2016-07-03 增删元素 unshift() 在数组开关添加元素 array.unshift("value"); array.un ...

  2. matlab学习笔记11_1低维数组操作

    一起来学matlab-matlab学习笔记11 11_1 低维数组操作repmat函数,cat函数,diag函数 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考书籍 <matlab ...

  3. Halcon学习(三)赋值与数组操作

    assign : 对数据赋值,对数组的初始化.但不能对数组中的某一个值进行赋值. 举例:Tuple1 := [1,0,3,4,5,6,7,8,9]    // 对数组进行初始化 Val := sin( ...

  4. Javascript数组操作

    使用JS也算有段时日,然对于数组的使用,总局限于很初级水平,且每每使用总要查下API,或者写个小Demo测试下才算放心,一来二去,浪费不少时间:思虑下,堪能如此继续之?当狠心深学下方是正道. 原文链接 ...

  5. 005-Scala数组操作实战详解

    005-Scala数组操作实战详解 Worksheet的使用 交互式命令执行平台 记得每次要保存才会出相应的结果 数组的基本操作 数组的下标是从0开始和Tuple不同 缓冲数组ArrayBuffer( ...

  6. js之数组操作

    js之数组操作 前言 本文主要从应用来讲数组api的一些操作,如一行代码扁平化n维数组.数组去重.求数组最大值.数组求和.排序.对象和数组的转化等.(文章摘自:https://segmentfault ...

  7. js完整教程一 : 基本概念和数组操作

    文章提纲 JS相关常识 JS基本概念 实践 总结 JS相关常识 js是一种可以与HTML标记语言混合使用的脚本语言,其编写的程序可以直接在浏览器中解释执行. 一.组成 js是一种专门为网页交互设计的脚 ...

  8. ES6之数组操作

    es6中对于数组操作添加了4种方法: 1.map —— 映射(一个对应一个) 2.reduce —— 汇总(多个出来一个) 3.filter —— 过滤 4.forEach —— 迭代/循环. 1.m ...

  9. 前端深入之js篇丨Array数组操作从入门到成神Up Up Up,持续更新中

    写在前面 随着前端深入的不断学习,发现数组这个数据结构在前端中有着相当大的存在感,由于我初学前端的时候并没有系统性的学习数组,所以我将通过这篇文章同你一起学习数组,希望我们能一起进步,学会熟练操作数组 ...

随机推荐

  1. loj 1017(dp)

    题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=25843 思路:我们可以发现题目与点的X坐标没有关系,于是可以直接对 ...

  2. 4KB对齐

    4KB是固态硬盘的读写基本block size的大小也就是说读写的基本单位是4KB,哪怕1B的内容读写实际操作也是操作了4KB的块实际操作是以块为单位的 假设我的读写起始点刚好定在两个4KB大小的物理 ...

  3. Android 编程下如何调整 SwipeRefreshLayout 的下拉刷新距离

    SwipeRefreshLayout 的下拉刷新距离比较短,并且也没有提供设置下拉距离的 API,但是看 SwipeRefreshLayout 的源码,会发现有一个内部变量 mDistanceToTr ...

  4. CountDownLatch、CyclicBarrier、Semaphore、Exchanger

    CountDownLatch: 允许N个线程等待其他线程完成执行.无法进行重复使用,只能用一次. 比如有2个任务A,它要等待其他4个任务执行完毕之后才能执行,此时就可以利用CountDownLatch ...

  5. Log4Net 配置StmpAppender

    目录 Log4Net 配置StmpAppender    1 1.前言    1 2.详细配置    1 1.StmpAppender配置    1 2.Root 配置    2 3.更多选项     ...

  6. ZOJ 3910 Market ZOJ Monthly, October 2015 - H

    Market Time Limit: 2 Seconds      Memory Limit: 65536 KB There's a fruit market in Byteland. The sal ...

  7. 【BZOJ】2435: [Noi2011]道路修建(树形dp)

    http://www.lydsy.com/JudgeOnline/problem.php?id=2435 我怎么感觉那么水.. 坑的是,dfs会爆...好吧..用bfs.. //upd:我的智商也是醉 ...

  8. MySQL 里面的Where 和Having和Count 和distinct和Group By对比

    mysql> select accid as uid,date(datetime) AS datetime from game.logLogin GROUP BY accid HAVING da ...

  9. Web前端开发规范文档你需要知道的事--HTML、css、js、文档等需要规范内容

          规范目的 为提高团队协作效率,便于后台人员添加功能及前端后期优化维护,输出高质量的文档,特制订此文档.本规范文档一经确认,前端开发人员必须按本文档规范进行前台页面开发.本文档如有不对或者不 ...

  10. 【C语言】02-第一个C程序

    由于我们最终要学习的是iOS开发,因此就使用Mac平台下的Xcode搭建C语言开发环境,而不使用Windows系统 如果你是在Windows环境下,可以下载这个简单的C语言学习工具:C/C++程序设计 ...