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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • wireshark抓包使用教程

    wireshark抓包使用教程Wireshark是非常流行的网络封包分析软件,可以截取各种网络数据包,并显示数据包详细信息。常用于开发测试过程各种问题定位。本文主要内容包括:1、Wireshark软件下载和安装以及Wireshark主界面介绍。2、WireShark简单抓包示例。通过该例子学会怎么抓包以及如何简单查看分析数据包内容。3、Wireshark过滤器使用。通过过滤器可以筛选出想要分析的内容。包括按照协议过滤、端口和主机名过滤、数据包内容过滤。Wireshark软件安装软件下载路径:w…

    2025年9月25日
    4
  • csgo绑定一键跳投创意工坊(csgo取消一键跳投)

    此篇文章我写出三种方法本人最推荐第三种!!!方法一废话从不多说直接在电脑上新建一个记事本命名随意(我的命名为1)在记事本里面直接粘贴以下代码alias+jumpthrow”+jump;-attack”alias-jumpthrow”-jump”bindN+jumpthrow(N为所绑定的按键为了醒目我加的粗可以随意更改)如图所示录入后记得保存然后在游戏中打开控制台一般是~键然…

    2022年4月12日
    719
  • java女人_Java是一个事业成功的女人

    java女人_Java是一个事业成功的女人原标题:Java是一个事业成功的女人文/北京达内教育(微信号:bjtedu01)关注后免费可获得达内5天训练营,都是干货哦~Java是一个事业成功的女人。很多在她手下干过的人都感觉她的能力跟她的地位并不般配,她更多的是通过技巧打动了中层管理人员。你也许会认为她是很有智慧的人,你愿意跟随她。但你要准备好在数年里不断的听到“你用错了接口,你遗漏了一个分号”这样的责备。C++是Java的表姐。她在…

    2022年7月7日
    25
  • unittest 测试框架

    unittest 测试框架一、unittest测试框架1、测试固件1.1setUp()1.2tearDown()2、unittest基本使用3、测试套件(suit)3.1测试用例执行顺序3.2忽略测试用例的执行4、断言5、HTML报告生成5.1测试报告5.2异常捕捉与错误截图5.2.1错误截图:get_scunittest是python的单元测试框架,unittest单元测试提供了创建测试用例,测试套件以及批量执行的方案。作为单元测试的框架,unittest也是可以对程序最小

    2022年10月15日
    0
  • springboot简易入门教程[通俗易懂]

    springboot简易入门教程[通俗易懂]一.在idea中如何使用maven创建springboot工程1.首先打开idea,点击左上方file,在new里面寻找并点击module,如下图所示2.完成上一步后点next3.命名自己的模块

    2022年7月4日
    23
  • Java类的初始化顺序_java静态类初始化顺序

    Java类的初始化顺序_java静态类初始化顺序package com.qcby;public class InitializeDemo { private static int k = 1; private static InitializeDemo t1 = new InitializeDemo(“t1”); private static InitializeDemo t2 = new InitializeDemo(“t2”); private static int i = print(“i”); pri

    2022年8月8日
    6

发表回复

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

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