【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":"\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学习】数组操作的更多相关文章
- RX学习笔记:JavaScript数组操作
RX学习笔记:JavaScript数组操作 2016-07-03 增删元素 unshift() 在数组开关添加元素 array.unshift("value"); array.un ...
- matlab学习笔记11_1低维数组操作
一起来学matlab-matlab学习笔记11 11_1 低维数组操作repmat函数,cat函数,diag函数 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考书籍 <matlab ...
- Halcon学习(三)赋值与数组操作
assign : 对数据赋值,对数组的初始化.但不能对数组中的某一个值进行赋值. 举例:Tuple1 := [1,0,3,4,5,6,7,8,9] // 对数组进行初始化 Val := sin( ...
- Javascript数组操作
使用JS也算有段时日,然对于数组的使用,总局限于很初级水平,且每每使用总要查下API,或者写个小Demo测试下才算放心,一来二去,浪费不少时间:思虑下,堪能如此继续之?当狠心深学下方是正道. 原文链接 ...
- 005-Scala数组操作实战详解
005-Scala数组操作实战详解 Worksheet的使用 交互式命令执行平台 记得每次要保存才会出相应的结果 数组的基本操作 数组的下标是从0开始和Tuple不同 缓冲数组ArrayBuffer( ...
- js之数组操作
js之数组操作 前言 本文主要从应用来讲数组api的一些操作,如一行代码扁平化n维数组.数组去重.求数组最大值.数组求和.排序.对象和数组的转化等.(文章摘自:https://segmentfault ...
- js完整教程一 : 基本概念和数组操作
文章提纲 JS相关常识 JS基本概念 实践 总结 JS相关常识 js是一种可以与HTML标记语言混合使用的脚本语言,其编写的程序可以直接在浏览器中解释执行. 一.组成 js是一种专门为网页交互设计的脚 ...
- ES6之数组操作
es6中对于数组操作添加了4种方法: 1.map —— 映射(一个对应一个) 2.reduce —— 汇总(多个出来一个) 3.filter —— 过滤 4.forEach —— 迭代/循环. 1.m ...
- 前端深入之js篇丨Array数组操作从入门到成神Up Up Up,持续更新中
写在前面 随着前端深入的不断学习,发现数组这个数据结构在前端中有着相当大的存在感,由于我初学前端的时候并没有系统性的学习数组,所以我将通过这篇文章同你一起学习数组,希望我们能一起进步,学会熟练操作数组 ...
随机推荐
- 【项目启动】 tomcat启动,项目无法启动,无法正常访问/项目可以启动,报错:java.lang.ClassNotFoundException: ContextLoaderListener
使用maven搭建项目(这个错误和是不是使用maven搭建项目没有关系),然后部署到tomcat中运行. 出现问题1: tomcat跑起来了,但是启动时间很短,没有报错,项目不能正常访问 项目启动时间 ...
- Android 生成和Pull解析xml
一.单个对象生成xml 生成以下xml,该怎么生成呢? <?xml version='1.0' encoding='UTF-8' standalone='yes' ?> <accou ...
- ubuntu下android开发环境安装
一 安装jdk 网址:http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html 新建一个文 ...
- 安卓通过putExtra传递数据的几种方式
通过intent传递数据时,使用以下代码报错: hMap<string, object=""> map=(Map<string, object="&qu ...
- Seismic Unix的一些历史
本文是我从官网上拷贝过来的,上国外网越来越慢了……(离题了). At the Society of Exploration Geophysicists (SEG) Annual Meeting in ...
- 最短路(Bellman_Ford) POJ 3259 Wormholes
题目传送门 /* 题意:一张有双方向连通和单方向连通的图,单方向的是负权值,问是否能回到过去(权值和为负) Bellman_Ford:循环n-1次松弛操作,再判断是否存在负权回路(因为如果有会一直减下 ...
- ZOJ 3905 Cake ZOJ Monthly, October 2015 - C
Cake Time Limit: 4 Seconds Memory Limit: 65536 KB Alice and Bob like eating cake very much. One ...
- BZOJ4399 : 魔法少女LJJ
将所有权值离散化,建立权值线段树,维护区间内数字个数以及对数的和,用于比较乘积大小. 对于每个连通块维护一棵权值线段树,合并时用线段树合并. 对于操作3和4,暴力删除所有不合法节点,然后一并修改后插入 ...
- Web 设计新趋势: 使用 SVG 代替 Web Icon Font
如果你还在使用 Icon Font 作为网页中显示图标的实现方案,那么你可能有点 Out 了. 由于使用 Icon Font 显示图标存在一些缺陷,开发者们一直在致力于探索使用 SVG 作为替代的方法 ...
- null VS undefined
null VS undefined “null与undefined的区别?” 以前去淘宝面试的时候被问过这个问题,当时只是粗略的按照犀牛书上的答案讲了下,但具体的并没有深入去了解. 后来有机会去问问身 ...