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 ...
随机推荐
- Sping--自动装配(byname, bytype)
UserDAOImpl.java: package com.bjsxt.dao.impl; import com.bjsxt.dao.UserDAO; import com.bjsxt.model.U ...
- Android如何监听蓝牙耳机的按键事件(转)
源: Android如何监听蓝牙耳机的按键事件 写在前面: 直接想要代码很简单,你直接把滚动条拉到最底端就可以看到.如果想要十分地了解为什么,那就按照我规划的一步一步来理解.以下测试环境以手头上有的「 ...
- 在阿里云ECS(CentOS6.5)上安装ftp
安装vsftpd 命令: yum install vsftpd –y 结果: 创建ftp存取文件的目录,用户名,密码 命令: useradd -d /home/ftp -g ftp -s /sbin/ ...
- div无法跟随内容的增加而拉伸
有时将 div 的 height 设置为 auto 后,仍然无法让 div 自动拉伸,发现是 display:block 的原因,将其设置为 inline-block 即可.
- MySQL引擎简述
MySQL数 据库引擎取决于MySQL在安装的时候是如何被编译的.要添加一个新的引擎,就必须重新编译MYSQL.在缺省情况下,MYSQL支持三个引擎:ISAM.MYISAM和HEAP.另外两种类型IN ...
- 100套新鲜免费的PS笔刷下载
这篇文章所有的Photoshop笔刷都是免费且高质量的.笔刷总类齐全:有飞鸟.冰块.水.树枝.喷墨.科技元素.皮肤纹理.烟火等等!用它们来加速你的工作流程,提升作品档次吧!”一挪妖娆举动,一刷风情万种 ...
- 增量式PID的stm32实现(转)
源:增量式PID的stm32实现,整定过程 首先说说增量式PID的公式,这个关系到MCU算法公式的书写,实际上两个公式的写法是同一个公式变换来得,不同的是系数的差异. 资料上比较多的是: 还有一种是: ...
- builds error
使用cocoapods 出现Undefined symbols for architecture i386: _OBJC_CLASS_$_XXXXXXX", referenced from: ...
- 关于Apache,Mysql,PHP之间的关系
声明:以下为作者原创,转载请注明文章来源地址. 通过百度百科我们知道 Apache(全称Apache HTTP Server):是世界使用排名第一的Web服务器软件.可以在大多数计算机操作系统中运行, ...
- Python 线程池的实现
import urllib2 import time import socket from datetime import datetime from thread_pool import * def ...