PHP 数组处理
一:PHP 定义数组:
直接定义关联数组
$capitals = array(
'Alabama' => 'Montgomery',
'Alaska' => 'Juneau',
'Arizona' => 'Phoenix'
);
PHP 代码 不能再 空的位置 打字 会报错
定义数组 方式1
$cars=array("Volvo","BMW","Toyota");
定义数组方式2
$cars['ke']="Volvo";
$cars["kq"]="BMW";
$cars["kw"]="Toyota";
结果:
定义数组方式3(默认数字索引)
$cars[]="Volvo";
$cars[]="BMW";
$cars[]="Toyota";
结果:
二:PHP数组与字符串之间的转化:
1:字符串转化为数组:
<?php
$str = 'one|two|three|four';
// 正数的 limit
print_r(explode('|', $str, 2));
// 负数的 limit
print_r(explode('|', $str, -1));
//不使用limit
print_r(explode('|', $str));
?>
结果:
2:数组转化为字符串:
<?php
$arr1=array(“shu”,”zhu”,”1″);
$c=implode(“##”,$arr1);
echo $c;
?>
结果: shu##zhu##1
3: 数组 转化为字符串 可以使用 遍历集合 然后拼接字符串
三: PHP 数组与JSON 数组的转化:转化为的JSON值 以字符串的形式存在
普通数组转化为JSON 数组
$arr = Array('one','two', 'three');
echo json_encode($arr);
输出
["one","two","three"]// string 格式
输出的JSON 为 字符串 格式 如下
$arr = array('one','two', 'three');
var_dump(json_encode((object)$arr));
结果:
关联数组
$arr = Array('1'=>'one','2'=>'two','3'=>'three');
echo json_encode($arr);
输出变为
{"1":"one","2":"two","3":"three"}
注意,数据格式从"[]"(数组)变成了"{}"(对象)。
如果你需要将"索引数组"强制转化成"对象",可以这样写
json_encode( (object)$arr);
或者
json_encode ( $arr, JSON_FORCE_OBJECT );
JSON数组转化为普通数组
json_decode()
通常情况下,json_decode()总是返回一个PHP对象,而不是数组。比如:
$json ='{"a":1,"b":2,"c":3,"d":4,"e":5}';
var_dump(json_decode($json));
结果就是生成一个PHP对象:
object(stdClass)#1 (5) {
["a"] => int(1)
["b"] => int(2)
["c"] => int(3)
["d"] => int(4)
["e"] => int(5)
}
如果想要强制生成PHP关联数组,json_decode()需要加一个参数true:
$json ='{"a":1,"b":2,"c":3,"d":4,"e":5}';
var_dump(json_decode($json,true));
结果就生成了一个关联数组:
array(5) {
["a"] => int(1)
["b"] => int(2)
["c"] => int(3)
["d"] => int(4)
["e"] => int(5)
}
下面三种json写法都是错的,你能看出错在哪里吗?五、json_decode()的常见错误
$bad_json ="{ 'bar': 'baz' }";
$bad_json ='{ bar: "baz" }';
$bad_json ='{ "bar": "baz", }';
第一个的错误是,json的分隔符(delimiter)只允许使用双引号,不能使用单引号。第二个的错误是,json名值对的"名"(冒号左边的部分),任何情况下都必须使用双引号。第三个的错误是,最后一个值之后不能添加逗号(trailing
comma)。 对这三个字符串执行json_decode()都将返回null,并且报错。
四:PHP 处理数组:
1.str_replace() 可以替换 数组中的指定 值 返回一个新的数组(修正后的数组)
$arr = array("blue","red","green","yellow");
print_r(str_replace("red","pink",$arr));
结果:
2.array_keys() 数组中找到 指定 value值 的 key 值
$a=array("Volvo"=>"XC90","BMW"=>"X5","Toyota"=>"Highlander");
print_r(array_keys($a,"Highlander"));
结果:
3. array_map() 数组中的每个值都运行指定函数 并且返回 新的数组。
<?php
function myfunction($v)
{
if ($v==="Dog")
{
return "Fido";
}
return $v;
} $a=array("Horse","Dog","Cat");
print_r(array_map("myfunction",$a));
?>
结果:
4.array_pop($a); 这里 注意 : 原来的 数组 已经改变 删除数组最后的 一位
<?php
$a=array("red","green","blue");
array_pop($a);
print_r($a);
?>
结果:
array_push()添加数组最后一位
<?php
$a=array("red","green");
array_push($a,"blue","yellow");
print_r($a);
?>
结果:
5. array_shift($a); 开头 删除
<?php
$a=array("a"=>"red","b"=>"green","c"=>"blue");
echo array_shift($a);
print_r ($a);
?>
结果: 
array_unshift($a); 开头 添加
<?php
$a=array("a"=>"red","b"=>"green");
array_unshift($a,"blue");
print_r($a);
?>
结果:
6.输出 key 和 value 值
<?php
$age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43"); foreach($age as $x=>$x_value)
{
echo "Key=" . $x . ", Value=" . $x_value;
echo "<br>";
}
?>
7.修改 数组值 【foreach 不能 直接修改 数组的值; 如果便利的话 只能使用 for 循环】
注意加引号
<?php
$age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");
echo "Peter is " . $age['Peter'] . " years old.";
?>
8.PHP数组 去重
<?php
$a=array("a"=>"red","b"=>"green","c"=>"red");
print_r(array_unique($a));
?>
9. 某个值是否存在某个 值
<?php
$people = array("Peter", "Joe", "Glenn", "Cleveland"); if (in_array("Glenn", $people))
{
echo "Match found";
}
else
{
echo "Match not found";
}
?>
10.合并数组 array_merge() 只可以合并数组类型的参数 不过可以使用强制转换 来合并 字符串和数组
<?php
$array1 = array("color" => "red", 2, 4);
$array2 = array("a", "b", "color" => "green", "shape" => "trapezoid", 4);
$result = array_merge($array1, $array2);
print_r($result);
?>
结果:
把字符串和数组 合并
<?php
$beginning = 'foo';
$end = array(1 => 'bar');
$result = array_merge((array)$beginning, (array)$end);
print_r($result);
?>
输出:
PHP 数组处理的更多相关文章
- javascript中的Array对象 —— 数组的合并、转换、迭代、排序、堆栈
Array 是javascript中经常用到的数据类型.javascript 的数组其他语言中数组的最大的区别是其每个数组项都可以保存任何类型的数据.本文主要讨论javascript中数组的声明.转换 ...
- 探究javascript对象和数组的异同,及函数变量缓存技巧
javascript中最经典也最受非议的一句话就是:javascript中一切皆是对象.这篇重点要提到的,就是任何jser都不陌生的Object和Array. 有段时间曾经很诧异,到底两种数据类型用来 ...
- 编写高质量代码:改善Java程序的151个建议(第5章:数组和集合___建议75~78)
建议75:集合中的元素必须做到compareTo和equals同步 实现了Comparable接口的元素就可以排序,compareTo方法是Comparable接口要求必须实现的,它与equals方法 ...
- 了解PHP中的Array数组和foreach
1. 了解数组 PHP 中的数组实际上是一个有序映射.映射是一种把 values 关联到 keys 的类型.详细的解释可参见:PHP.net中的Array数组 . 2.例子:一般的数组 这里,我 ...
- JavaScript权威指南 - 数组
JavaScript数组是一种特殊类型的对象. JavaScript数组元素可以为任意类型,最大容纳232-1个元素. JavaScript数组是动态的,有新元素添加时,自动更新length属性. J ...
- JavaScript常见的五种数组去重的方式
▓▓▓▓▓▓ 大致介绍 JavaScript的数组去重问题在许多面试中都会遇到,现在做个总结 先来建立一个数组 var arr = [1,2,3,3,2,'我','我',34,'我的',NaN,NaN ...
- js:给定两个数组,如何判断他们的相对应下标的元素类型是一样的
题目: 给Array对象原型上添加一个sameStructureAs方法,该方法接收一个任意类型的参数,要求返回当前数组与传入参数数组(假定是)相对应下标的元素类型是否一致. 假设已经写好了Array ...
- javascript数组查重方法总结
文章参考地址:http://blog.csdn.net/chengxuyuan20100425/article/details/8497277 题目 对下列数组去重: var arr = ['aa', ...
- 掌握javascript中的最基础数据结构-----数组
这是一篇<数据结构与算法javascript描述>的读书笔记.主要梳理了关于数组的知识.部分内容及源码来自原作. 书中第一章介绍了如何配置javascript运行环境:javascript ...
- 小兔JS教程(四)-- 彻底攻略JS数组
在开始本章之前,先给出上一节的答案,参考答案地址: http://www.xiaotublog.com/demo.html?path=homework/03/index2 1.JS数组的三大特性 在J ...
随机推荐
- Ubuntu安装MongoDB和PHP扩展
MongoDB是一个可伸缩的,高性能的开源NoSQL 文档数据库.主要用C++开发完成.面向文档存储,全索引支持,可复制和高可用性,自动分片等特征.其在非关系型数据库中是功能最丰富,最像关系型数据库 ...
- 部署项目时遇到的问题---IIS7.X配置ASP.NET MVC4
1.安装.NET Frameword4.0框架.如果先装IIS后装4.0框架的话,要在IIS注册4.0框架.具体方法见下图 .NET框架版本请根据操作系统版本自行选择.注册完后,在“ISAPI和CGI ...
- MIPI-2
Mipi针对显示有一整套解决方案,首先,框图如下 可以看到,很像OSI七层参考模型,分为 应用层:像素处理以及像素包管理,处理一些比较高的协议, 协议层底层:用于对打包好的像素数据进行二次打包,包括对 ...
- HMC5883L地磁传感器驱动
霍尼韦尔 HMC5883L 是一种表面贴装的高集成模块,并带有数字接口的弱磁传感器芯片,应用于低成本罗盘和磁场检测领域.HMC5883L 包括最先进的高分辨率 HMC118X 系列磁阻传感器,并附带霍 ...
- 阿里CEO张勇:阿里蚂蚁20亿元扶持开发者
https://bbs.taobao.com/catalog/thread/508895-318032179.htm?spm=a21bo.7724922.8439-0.2.tkjSOl 阿里CEO张勇 ...
- Nginx基本配置、性能优化指南
大多数的Nginx安装指南告诉你如下基础知识——通过apt-get安装,修改这里或那里的几行配置,好了,你已经有了一个Web服务器了!而且,在大多数情况下,一个常规安装的nginx对你的网站来说已经能 ...
- 常用SQL DDL语句
常用SQL DDL语句 DDL-数据库定义语言:直接提交的.CREATE:用于创建数据库对象.DECLARE:除了是创建只在过程中使用的临时表外,DECLARE语句和CREATE语句非常相似.唯一可以 ...
- JS判断doctype文档模式-document.compatMode
IE对盒模型的渲染在 Standards Mode和Quirks Mode是有很大差别的,在Standards Mode下对于盒模型的解释和其他的标准浏览器是一样,但在Quirks Mode模式下则有 ...
- YII 1.0 设置关联模型
在model中设置如下 /* * 设置关联 */ public function relations(){ return array( 'cate'=>array(self::BELONGS_T ...
- PHP 一致性哈希算法的一种简单实现
在分布式系统中,如果某业务可以由多个相同的节点处理,很容易想到用HASH的方式将业务请求分散到这些节点处理,比如memecache缓存等分 布式集群应用,如果只是简单的使用,不涉及用户用户状态等信息, ...