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 ...
随机推荐
- 为CKEditor开发插入代码的插件 已提供下载
http://www.cnblogs.com/moozi/archive/2010/01/06/1640034.html
- [iOS Animation]-CALayer 显示动画
显式动画 如果想让事情变得顺利,只有靠自己 -- 夏尔·纪尧姆 上一章介绍了隐式动画的概念.隐式动画是在iOS平台创建动态用户界面的一种直接方式,也是UIKit动画机制的基础,不过它并不能涵盖所有的动 ...
- iOS 旋转
实现一张图片的旋转部分角度显示: [cpp] view plaincopy UIImageView image = [[UIImageView alloc]init]; image.frame = C ...
- VS2010打开旧版本MFC工程无对话框
解决方案: 左侧有个"资源视图",打开,里面就能找得到对话框,如果没有资源视图,就在菜单的视图选项里打开资源视图!
- 左偏树初步 bzoj2809 & bzoj4003
看着百度文库学习了一个. 总的来说,左偏树这个可并堆满足 堆的性质 和 左偏 性质. bzoj2809: [Apio2012]dispatching 把每个忍者先放到节点上,然后从下往上合并,假设到了 ...
- java实现FFT变换(转)
源:java实现FFT变换 /************************************************************************* * Compilati ...
- UVa 11790 - Murcia's Skyline
题目大意:给一个建筑的序列,建筑用高度和宽度描述,找出按高度的LIS和LDS,最长XX子序列的长度按照序列中建筑的宽度和进行计算. 其实就是带权的最长XX子序列问题,原来是按个数计算,每个数权都是1, ...
- 编写PHP规则
PHP是运行在服务器端的语言,可以动态生成html页面.这篇博客介绍它的一些编码规则. 一.基本规则 1.PHP代码总是用<?php和?>包围,例如 <?php echo " ...
- Docker学习计划
刚开始学习Docker的时候,找资料在网上看到最多的是Docker的好处.比如: 1.Docker 容器的启动可以在秒级实现,这相比传统的虚拟机方式要快得多 2.Docker 对系统资源的利用率很高, ...
- Sublime Text3 使用手册
1.标签页切换:ctrl+tab 2.Sublime Text3的配色方案(Preferences——配色方案)我选白色方案是:Eiffel;深色方案我选:Monokai 3.左边资源栏:先ctrl+ ...