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


相关推荐

  • C++ 移位操作

    C++ 移位操作左移全部是补 0 这毫无疑问 在右移操作中 最左侧补 0 还是补 1 完全取决于操作数本身是不是符号数 如果是无符号数 则全部是补 0 如果是有符号数 则补符号位上的数字 负数补 1 正数补 0 也就是说 对于有符号数 无论怎么移 符号位保持不变

    2025年6月2日
    5
  • QuoteName\生成Sql语句

    QuoteName\生成Sql语句ifexists(selectnamefromtempdb.dbo.sysobjectswhereid=object_id(N’tempdb.dbo.#tempWorkDate’)andtype=’u’)droptable#tempWorkDateCREATETABLE[#tempWorkDate]([WorkDate][varc…

    2022年7月25日
    8
  • 左值和右值、左值引用与右值引用、移动语句(2)「建议收藏」

    以下来自IBM知识中心表达式可以分为以下值类别之一:左值Lvalue:如果表达式不是const限定的,则表达式可以出现在赋值表达式的左侧。 x值:要过期的右值引用。 右值(Prvalue)rvalue:非xvalue表达式,仅出现在赋值表达式的右侧。Rvalues包括xvalues和prvalues。Lvalues和xvalues可以称为glvalues。Note:类(p…

    2022年4月8日
    51
  • 两数之和 IV – 输入 BST

    两数之和 IV – 输入 BST两数之和IV-输入BST(力扣:653)给定一个二叉搜索树和一个目标结果,如果BST中存在两个元素且它们的和等于给定的目标结果,则返回true。

    2022年5月9日
    47
  • javaEE与java的区别

    javaEE与java的区别好程序员Java培训分享JavaEE与Java的区别,有不少想要转行做程序员的朋友都会有一个疑问,JavaEE和Java是不是一种语言,这两者之间又有什么区别呢?  Java一共分为三个版本:JavaSE(标准版)、JavaEE(企业版)以及JavaME(微型版)。  其中JavaSE就是大家所熟知的Java根底,JavaEE在企业最常用的地方就是网站PC端的开发,而JavaME常用于移动端开发,现在熟悉的安卓系统便是用JavaME开发的。  Java既可以被编译,也可以被解说。经过

    2022年7月7日
    30
  • JAVA实现DAO基本层CRUD操作

    JAVA实现DAO基本层CRUD操作

    2022年1月3日
    45

发表回复

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

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