【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,持续更新中
写在前面 随着前端深入的不断学习,发现数组这个数据结构在前端中有着相当大的存在感,由于我初学前端的时候并没有系统性的学习数组,所以我将通过这篇文章同你一起学习数组,希望我们能一起进步,学会熟练操作数组 ...
随机推荐
- Codeforces Round #313 (Div. 2) C. Gerald's Hexagon 数学
C. Gerald's Hexagon Time Limit: 2 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/559/pr ...
- Bitset 用法(STL)
std::bitset是STL的一个模板类,它的参数是整形的数值,使用位的方式和数组区别不大,相当于只能存一个位的数组.下面看一个例子 bitset<20> b1(5); cout< ...
- URI和URL的区别
这两天在写代码的时候,由于涉及到资源的位置,因此,需要在Java Bean中定义一些字段,用来表示资源的位置,比如:imgUrl,logoUri等等.但是,每次定义的时候,心里都很纠结,是该用imgU ...
- 简单几何(求交点) UVA 11437 Triangle Fun
题目传送门 题意:三角形三等分点连线组成的三角形面积 分析:入门题,先求三等分点,再求交点,最后求面积.还可以用梅涅劳斯定理来做 /********************************** ...
- DFS POJ 2362 Square
题目传送门 /* DFS:问能否用小棍子组成一个正方形 剪枝有3:长的不灵活,先考虑:若根本构不成正方形,直接no:若第一根比边长长,no 这题是POJ_1011的精简版:) */ #include ...
- BZOJ3906 : Trie
将输入的Trie建成AC自动机,并建出fail树. 那么操作1等价于在给定点的子树的并集里都加1. 操作2等价于查询给定点到根节点路径的并集的权值和. 求出DFS序后,对于操作1,将点按进入时间戳从小 ...
- BZOJ3498 : PA2009 Cakes
令三元环(i,j,k)中i>j>k,则每条边只需要从大点连向小点 设d[x]表示从x连出的边的条数 从1到n枚举点i,然后枚举所有与i相连的边(i,x)(x<i) 如果$d[x]\l ...
- TYVJ P1074 武士风度的牛 Label:跳马问题
背景 农民John有很多牛,他想交易其中一头被Don称为The Knight的牛.这头牛有一个独一无二的超能力,在农场里像Knight一样地跳(就是我们熟悉的象棋中马的走法).虽然这头神奇的牛不能跳到 ...
- BZOJ3211 花神游历各国
Description Input Output 每次x=1时,每行一个整数,表示这次旅行的开心度 Sample Input 4 1 100 5 5 5 1 1 2 2 1 2 1 1 2 2 ...
- Java导出Highcharts生成的图表为图片源码
本文转载自:http://blog.csdn.net/dengsilinming/article/details/7352054 需要的jar包: 需要的js文件:(可以通过http://www.hi ...