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

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • global south 有哪些国家_global ethics

    global south 有哪些国家_global ethicsThedifferenceofkeywordsofglobalandnonlocalistheplacewheretheyareuses.Forexample,nonlocolisusedwithinthefunctionforstatingavariablewhichcanbeusedoutsidethefunctionInthesamemeaning,globalisusedoutsidethefunctionfo

  • length命令怎么用Matlab,matlab中length函数用法「建议收藏」

    length命令怎么用Matlab,matlab中length函数用法「建议收藏」matlab中的length表示什么?应该如何使用?length:数组长度(即行数或列数中的较大值);使用方法:n=length(A):如果A为非空数组,返回行数和列数两者之间数值较大的那一个值,即相当于执行了max(size(A));如果A为空数组,则返回0;如果A是一个向量则返回A的长度。length(x)在matlab中是什么意思?iflength(h)>1||h<0…

  • c++ system()和WinExec()的区别[通俗易懂]

    c++ system()和WinExec()的区别[通俗易懂]区别1.system是c库的函数WinExec是windows函数区别2.system有一个参数,是命令行Winexec有两个参数,一个是命令行,一个是窗口显示区别3.虽然两个都是命令行,但有很大的区别Winexec的命令行参数一般是一个外部程序的路径加给这个程序的参数,如Winexec("D:\\notepad.exe1.txt",WM_SHOWWINDOW);system的命令行参数其实是给…

  • springboot和springmvc的区别

    springboot和springmvc的区别面试题:你知道springboot和springmvc的区别是什么?之前自己搭过springboot的相关项目,但是如何进行比较,从自我感觉来看就是使用springboot用起来几乎没有配置,个人搭的项目没有用到配置相关的内容。于是我就用了这个回答给面试官,可想而知,这种回答并不好。于是现在百度了相关文章,就把理解写成博客当做笔记。springmvc从两个方面…

  • mysql索引b树b+树_B树的度是什么意思

    mysql索引b树b+树_B树的度是什么意思第一篇引用第二篇引用第三篇引用第四篇引用

  • Readprocessmemory用法[通俗易懂]

    Readprocessmemory用法[通俗易懂]函数功能:该函数从指定的进程中读入内存信息,被读取的区域必须具有访问权限。 函数原型:BOOLReadProcessMemory(HANDLEhProcess,LPCVOIDlpBaseAddress,LPVOIDlpBuffer,DWORDnSize,LPDWORDlpNumberOfBytesRead); 参数:hProcess:进程句柄 lpBaseA

发表回复

您的电子邮箱地址不会被公开。

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