PHP数组详解

作为一名C++程序员,在转做PHP开发的过程中,对PHP数组产生了一些混淆,与C++数组有相似的地方,也有一些不同,下面就全面地分析一下PHP的数组及其与C++中相应数据类型的区别和联系。数组的分类

大家好,又见面了,我是全栈君,今天给大家准备了Idea注册码。

作为一名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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/120291.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • js保留两位小数四舍五入_parsefloat保留两位小数

    js保留两位小数四舍五入_parsefloat保留两位小数一、我们首先从经典的“四舍五入”算法讲起1、四舍五入的情况 1 2 varnum=2.446242342; num=num.toFixed(2);//输出结果为2.45 2、不四舍五入第一种,先把小数边整数: 1 Math.floor(15.7784514000*100)/100//输出结果为15.77 第二种,当作字符串,使用正则匹配: 1

    2022年8月10日
    96
  • 手机框架_移动端框架_跨平台_汇总_哪个好[通俗易懂]

    uni-app【重点推荐】是一个使用Vue.js开发跨平台应用的前端框架,开发者编写一套代码,到7个平台,Android版iOS版H5版微信小程序版支付宝小程序版百度小程序版头条小程序版https://uniapp.dcloud.io/DCloud即数字天堂(北京)网络技术有限公司是W3C成员及HTML5中国产业联盟发起单位,旗下产品:…

    2022年4月12日
    42
  • hadoop菜鸟教程 Hadoop学习资料(云计算学习电子书)

    hadoop菜鸟教程 Hadoop学习资料(云计算学习电子书)hadoop与大数据的关系?大数据技术正渗透到各行各业。作为数据分布式处理系统的典型代表,Hadoop已成为该领域的事实标准。但Hadoop并不等于大数据。它只是一个成功的分布式系统,用于处理离线数据。大数据领域中还有许多其他类型的处理系统。随着大数据技术的普及,Hadoop已成为其开源功能和卓越性能的新宠。有些人甚至认为大数据是Hadoop。实际上,这是一种误解。Hadoop只是一个用于处…

    2022年4月29日
    32
  • oracle 查看所有表和视图

    oracle 查看所有表和视图查看所有表:select*fromall_tables查看所有视图:select*fromall_views

    2025年6月6日
    0
  • android之解析包时出现错误(二)

    为什么是二呢,之前遇到过一次了,详见http://blog.csdn.net/jason0539/article/details/12222173这次的原因不同,再记录下public class DownloadTask { /** * @param path下载地址 * @param filePath存储路径 * @param progressDialog进度

    2022年3月11日
    36
  • 软件测试期末考试复习题

    软件测试期末考试复习题一、选择题1.在软件测试阶段,测试步骤按次序可以划分为以下几步:(A)A、单元测试、集成测试、系统测试、验收测试B、验收测试、单元测试、系统测试、集成测试C、单元测试、集成测试、验收测试、系统测试D、系统测试、单元测试、集成测试、验收测试2.软件测试技术可以分为静态测试和动态测试,下列说法中错误的是(D)。A、静态测试是指不运行实际程序,通过检查和…

    2022年10月4日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号