PHP数组详解
作为一名C++程序员,在转做PHP开发的过程中,对PHP数组产生了一些混淆,与C++数组有相似的地方,也有一些不同,下面就全面地分析一下PHP的数组及其与C++中相应数据类型的区别和联系。
数组的分类:
1、数值数组:也叫索引数组,即以数字(从0 开始)作为数组下标。相当于C++中的vector。
2、关联数组:以字符串作为数组下标。相当于C++中的map。
3、多维数组:数组中每个元素也是一个数组。其子数组中的每个元素也可以是数组。
数组的声明:
1、数值数组
a、如下例子中,会自动分配数字ID键。
$names = array("Peter","Joe","Lily");
b、如下例子中,我们人工分配数字ID键。
$names[0] = "Peter";
$names[1] = "Joe";
$names[2] = "Lily";
可以在脚本中使用这些ID键:
<?php
$names[0] = "Peter";
$names[1] = "Joe";
$names[2] = "Lily";
echo $names[0]." and ".$names[1]." are ".$names[2]."'s neighbors";
/* 何问起 hovertree.com */
?>
2、关联数组:
例子1
$ages = array("Peter"=>32, "Joe"=>30, "Lily"=>28);
例子2
本例与例子1相同,只是另一种创建数组的方法。
$ages["Peter"] = "32";
$ages["Joe"] = "30";
$ages["Lily"] = "28";
在脚本中使用关联数组:
<?php
$ages["Peter"] = "32";
$ages["Joe"] = "30";
$ages["Lily"] = "28";
echo "Peter is ".$ages["Peter"]." years old.";
/* 何问起 hovertree.com */
?>
以上脚本输出:
Peter is 32 years old.
3、多维数组:
在本例中,我们创建了一个带有自动分配数字ID键的多维数组:
$families = array
{
"Griffin"=>array
{
"Peter",
"Lois",
"Megan"
},
"Quagmire"=>array
{
"Glenn"
},
"Brown"=>array
{
"Cleveland",
"Loretta",
"Junior"
}
};
echo "Is " . $families['Griffin'][2] . " a part of the Griffin family?";
以上代码输出:
Is Megan a part of the Griffin family?
数组遍历
1、for循环遍历
for循环只能遍历索引数组。
<?php
$names = array("Peter","Joe","Lily");
for($id=0;$id<count($names);++$id)
{
echo $names[$id];
}
?>
2、foreach遍历
即可以遍历索引数组,也可以遍历关联数组
遍历索引数组
foreach(array_expression as $value)
{
循环体;
}
遍历关联数组
foreach(array_expression as $key=>$value)
{
循环体;
} A、一维数组遍历
索引数组
<?php
$contact = array("李某","xx公司","abc@xx.com");
foreach($contact as $value)
{
echo $value;
}
?> <?php
$contact = array("姓名"=>"李某","公司"=>"xx公司","邮箱"=>"abc@xx.com");
foreach($contact as $key=>$value)
{
echo $key.":".$value;
}
?> B、多维数组遍历
<?php
$wage = array(
"市场部"=array(
array(1,"李某","市场经理",8000),
array(2,"王某","市场专员",5000),
array(3,"刘某","市场专员",7000)
),
"产品部"=array(
array(1,"李某","产品经理",9000),
array(2,"王某","产品专员",6000),
array(3,"刘某","产品专员",5000)
),
"账务部"=array(
array(1,"李某","账务经理",7000),
array(2,"王某","账务专员",6000),
array(3,"刘某","账务专员",5000)
)
); foreach($wage as $section=>$table)
{
echo $section."部门人员如下";
foreach($table as $row)
{
foreach($row as $value)
{
echo $value;
}
}
} /* 何问起 hovertree.com */
?>
推荐:http://www.cnblogs.com/roucheng/p/phpdongtai.html
PHP数组详解的更多相关文章
- 3.awk数组详解及企业实战案例
awk数组详解及企业实战案例 3.打印数组: [root@nfs-server test]# awk 'BEGIN{array[1]="zhurui";array[2]=" ...
- JavaScript进阶(十)Array 数组详解
JS array 数组详解 数组的声明方法 arrayObj = new Array(); 的数组 ,并且第一位是5 数组的运算(传地址) var t2=new Array(); t2[0]=1; t ...
- Java基础之 数组详解
前言:Java内功心法之数组详解,看完这篇你向Java大神的路上又迈出了一步(有什么问题或者需要资料可以联系我的扣扣:734999078) 数组概念 同一种类型数据的集合.其实数组就是一个容器. 数组 ...
- “全栈2019”Java第三十一章:二维数组和多维数组详解
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...
- “全栈2019”Java第三十章:数组详解(下篇)
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...
- “全栈2019”Java第二十九章:数组详解(中篇)
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...
- “全栈2019”Java第二十八章:数组详解(上篇)
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...
- Swift_数组详解
Swift_数组详解 点击查看源码 初始化 //初始化 fileprivate func testInit() { //空数组 var array = [Int]() print(array) arr ...
- (转)awk数组详解及企业实战案例
awk数组详解及企业实战案例 原文:http://www.cnblogs.com/hackerer/p/5365967.html#_label03.打印数组:1. [root@nfs-server t ...
- 【转载】KMP入门级别算法详解--终于解决了(next数组详解)
[转载]https://blog.csdn.net/LEE18254290736/article/details/77278769 对于正常的字符串模式匹配,主串长度为m,子串为n,时间复杂度会到达O ...
随机推荐
- WebGIS项目中利用mysql控制点库进行千万条数据坐标转换时的分表分区优化方案
文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/ 1. 背景 项目中有1000万条历史案卷,为某地方坐标系数据,我们的真实 ...
- Asp.Net WebApi核心对象解析(上篇)
生活需要自己慢慢去体验和思考,对于知识也是如此.匆匆忙忙的生活,让人不知道自己一天到晚都在干些什么,似乎每天都在忙,但又好似不知道自己到底在忙些什么.不过也无所谓,只要我们知道最后想要什么就行.不管怎 ...
- 深入理解javascript的getTime方法
1.理解getTime getTime() 方法返回一个时间的格林威治时间数值. 可以使用这个方法把一个日期时间赋值给另一个Date 对象. 语法: dateObj.getTime() 参数: 无. ...
- Kooboo CMS技术文档之三:切换数据存储方式
切换数据存储方式包括以下几种: 将文本内容存储在SqlServer.MySQL.MongoDB等数据库中 将站点配置信息存储在数据库中 将后台用户信息存储在数据库中 将会员信息存储在数据库中 将图片. ...
- FILE文件流的中fopen、fread、fseek、fclose的使用
FILE文件流用于对文件的快速操作,主要的操作函数有fopen.fseek.fread.fclose,在对文件结构比较清楚时使用这几个函数会比较快捷的得到文件中具体位置的数据,提取对我们有用的信息,满 ...
- NGINX引入线程池 性能提升9倍
1. 引言 正如我们所知,NGINX采用了异步.事件驱动的方法来处理连接.这种处理方式无需(像使用传统架构的服务器一样)为每个请求创建额外的专用进程或者线程,而是在一个工作进程中处理多个连接和请求.为 ...
- BPM配置故事之案例6-条件可见与条件必填
小明兴奋的告诉大毛自己独立解决了必填和水印问题,腹黑的大毛决定给小明出一个进阶问题刷一下存在感. 大毛:我再考考你,我把表单改成了这样(下图).怎么做到,预算状态为"预算内"时,不 ...
- CRM 数据密钥 忘记 解决方案
UPDATE EmailServerProfile SET IncomingPassword=nullUPDATE EmailServerProfile SET OutgoingPassword=nu ...
- ASP.NET 中的 Async/Await 简介
本文转载自MSDN 作者:Stephen Cleary 原文地址:https://msdn.microsoft.com/en-us/magazine/dn802603.aspx 大多数有关 async ...
- (转)linux下和云端通讯的例程, ubuntu和openwrt实验成功(一)
一. HTTP请求的数据流总结#上传数据, yeelink的数据流如下POST /v1.0/device/4420/sensor/9089/datapoints HTTP/1.1Host: api. ...