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. CDH中,执行HIVE脚本表联查权限问题。。

    文章来自http://www.cnblogs.com/hark0623/p/4174641.html 转发请注明 有时候执行表联查的时候总会出现没有权限写文件的情况. 这个时候使用sudo -H hi ...

  2. Linux磁盘分区与格式化

    磁盘分区格式说明 linux分区不同于windows linux下分区标示: 例如:hda1 hd这两个字母表示分区所在的设备类型,hd标示IDE类型硬盘,sd表示SCSI类型硬盘 第三字母a标示硬盘 ...

  3. 了解Json

    Json(JavaScript Object Notation) 是一种轻量级的数据交换格式,它是基于JavaScript的一个子集. 数据格式简单, 易于读写, 占用带宽小. {'age':'12' ...

  4. 水题 ZOJ 3876 May Day Holiday

    题目传送门 /* 水题:已知1928年1月1日是星期日,若是闰年加1,总天数对7取余判断就好了: */ #include <cstdio> #include <iostream> ...

  5. MD5算法 简介

    MD5(单向散列算法)的全称是Message-Digest Algorithm 5(信息-摘要算法),经MD2.MD3和MD4发展而来.MD5算法的使用不需要支付任何版权费用. MD5功能 l 输入任 ...

  6. extjs 2.0获取选中的radio的值

    var temp=winFormPanel.getForm().findField('selectedType').getGroupValue();

  7. BZOJ4120 : [Baltic2015]Editor

    活跃区的操作序列的优先级单调不上升,所以每次undo的一定是一段区间. 以优先级为权值建立可持久化权值线段树,维护优先级在某区间内的最靠后的位置. #include<cstdio> con ...

  8. Wikioi 1020 孪生蜘蛛 Label:Floyd最短路

    题目描述 Description 在G城保卫战中,超级孪生蜘蛛Phantom001和Phantom002作为第三层防卫被派往守护内城南端一带极为隐秘的通道. 根据防护中心的消息,敌方已经有一只特种飞蛾 ...

  9. 洛谷 P1008 三连击 Label:水

    题目描述 将1,2,…,9共9个数分成三组,分别组成三个三位数,且使这三个三位数构成1:2:3的比例,试求出所有满足条件的三个三位数. 输入输出格式 输入格式: 木有输入 输出格式: 若干行,每行3个 ...

  10. C#时间格式化(Datetime)用法详解

    Datetime.ToString(String, IFormatProvider) 参数format格式详细用法: 格式字符 关联属性/说明 d ShortDatePattern D LongDat ...