php数组的写法是“array(key=>value,...)”,其中参数key可以是一个整数integer或字符串string,而参数value可以是任意类型的值。

本教程操作环境:windows10系统、php5.4,本文适用于所有品牌的电脑。

Array 数组

PHP 中的数组实际上是一个有序映射。映射是一种把 values 关联到 keys 的类型。此类型在很多方面做了优化,因此可以把它当成真正的数组,或列表(向量),散列表(是映射的一种实现),字典,集合,栈,队列以及更多可能性。由于数组元素的值也可以是另一个数组,树形结构和多维数组也是允许的。

解释这些结构超出了本手册的范围,但对于每种结构至少会提供一个例子。要得到这些结构的更多信息,建议参考有关此广阔主题的其它著作。

语法

定义数组 array()

可以用 array() 语言结构来新建一个数组。它接受任意数量用逗号分隔的 键(key) => 值(value)对。array( key => value

, ...

)

// 键(key)可是是一个整数 integer 或字符串 string

// 值(value)可以是任意类型的值

最后一个数组单元之后的逗号可以省略。通常用于单行数组定义中,例如常用 array(1, 2) 而不是 array(1, 2, )。对多行数组定义通常保留最后一个逗号,这样要添加一个新单元时更方便。

自 5.4 起可以使用短数组定义语法,用 [] 替代 array()。

Example #1 一个简单数组<?php

$array = array(

"foo" => "bar",

"bar" => "foo",

);

// 自 PHP 5.4 起

$array = [

"foo" => "bar",

"bar" => "foo",

];

?>

key 可以是 integer 或者 string。value 可以是任意类型。

此外 key 会有如下的强制转换:

包含有合法整型值的字符串会被转换为整型。例如键名 "8" 实际会被储存为 8。但是 "08" 则不会强制转换,因为其不是一个合法的十进制数值。

浮点数也会被转换为整型,意味着其小数部分会被舍去。例如键名 8.7 实际会被储存为 8。

布尔值也会被转换成整型。即键名 true 实际会被储存为 1 而键名 false 会被储存为 0。

Null 会被转换为空字符串,即键名 null 实际会被储存为 ""。

数组和对象不能被用为键名。坚持这么做会导致警告:Illegal offset type。

如果在数组定义中多个单元都使用了同一个键名,则只使用了最后一个,之前的都被覆盖了。

Example #2 类型强制与覆盖示例<?php

$array = array(

1 => "a",

"1" => "b",

1.5 => "c",

true => "d",

);

var_dump($array);

?>

以上例程会输出:

array(1) {

[1]=>

string(1) "d"

}

上例中所有的键名都被强制转换为 1,则每一个新单元都会覆盖前一个的值,最后剩下的只有一个 "d"。

PHP 数组可以同时含有 integer 和 string 类型的键名,因为 PHP 实际并不区分索引数组和关联数组。

如果对给出的值没有指定键名,则取当前最大的整数索引值,而新的键名将是该值加一。如果指定的键名已经有了值,则该值会被覆盖。

Example #3 混合 integer 和 string 键名<?php

$array = array(

"foo" => "bar",

"bar" => "foo",

100 => -100,

-100 => 100,

);

var_dump($array);

?>

以上例程会输出:

array(4) {

["foo"]=>

string(3) "bar"

["bar"]=>

string(3) "foo"

[100]=>

int(-100)

[-100]=>

int(100)

}

key 为可选项。如果未指定,PHP 将自动使用之前用过的最大 integer 键名加上 1 作为新的键名。

Example #4 没有键名的索引数组<?php

$array = array("foo", "bar", "hallo", "world");

var_dump($array);

?>

以上例程会输出:

array(4) {

[0]=>

string(3) "foo"

[1]=>

string(3) "bar"

[2]=>

string(5) "hallo"

[3]=>

string(5) "world"

}

还可以只对某些单元指定键名而对其它的空置:

Example #5 仅对部分单元指定键名<?php

$array = array(

"a",

"b",

6 => "c",

"d",

);

var_dump($array);

?>

以上例程会输出:

array(4) {

[0]=>

string(1) "a"

[1]=>

string(1) "b"

[6]=>

string(1) "c"

[7]=>

string(1) "d"

}

可以看到最后一个值 "d" 被自动赋予了键名 7。这是由于之前最大的整数键名是 6。

什么是php数组,php 数组写法是什么相关推荐

  1. java的byte php_java_浅谈java的byte数组的不同写法,(由于篇幅原因阐述的不够详 - phpStudy...

    浅谈java的byte数组的不同写法 (由于篇幅原因阐述的不够详细科学,不喜勿喷). 经常看到java中对byte数组的不同定义,粗略整理的一下: 一个字节(byte)=8位(bit),"b ...

  2. MyBatis传入参数为list、数组、map写法

    1.foreach简单介绍: foreach的主要用在构建in条件中,它可以在SQL语句中进行迭代一个集合. foreach元素的属性主要有item,index,collection,open,sep ...

  3. java中定义byte数组,浅谈java的byte数组的不同写法

    (由于篇幅原因阐述的不够详细科学,不喜勿喷). 经常看到java中对byte数组的不同定义,粗略整理的一下: 一个字节(byte)=8位(bit),"byte数组"里面全部是&qu ...

  4. 【杂记】(富文本框回填值、ajax数据回填按钮年级学科、去除数组中数组外包的引号、多重循环的写法、微测评获奖页面的内容 循环拼接写法、textarea禁止拖动、html基本、透明度、页面内出现滚动条)

    1. 富文本框回填值 for(var i = 0;i<res.data.choiceoptinfo.length;i++){ueArr[i].ready(function(){//选项ueArr ...

  5. java定义byte数组_浅谈java的byte数组的不同写法

    (由于篇幅原因阐述的不够详细科学,不喜勿喷). 经常看到java中对byte数组的不同定义,粗略整理的一下: 一个字节(byte)=8位(bit),"byte数组"里面全部是&qu ...

  6. C++ 笔记(14)— 指针(指针声明、取地址、取值、new/delete、NULL指针、指针运算、指针数组、数组指针、指针传递给函数、从函数返回指针)

    1. 声明指针 指针是一个变量,其值为另一个变量的地址,即,内存位置的直接地址.就像其他变量或常量一样,您必须在使用指 针存储其他变量地址之前,对其进行声明. 指针变量声明的一般形式为: type * ...

  7. ioS开发之c语言基础-一维数组,字符数组

    // //  main.m //  C4-一维数组,字符数组 // //  Created by dllo on 15/10/8. //  Copyright (c) 2015年 dllo. All ...

  8. linux数组shell数组添加内容,shell数组的定义与应用

    bash支持一维数组(不支持多维数组),并且没有限定数组的大小.类似与C语言,数组元素的下标由0开始编号.获取数组中的元素要利用下标,下标可以是整数或算术表达式,其值应大于或等于0.shell 下的多 ...

  9. 【C 语言】指针 与 数组 ( 指针 | 数组 | 指针运算 | 数组访问方式 | 字符串 | 指针数组 | 数组指针 | 多维数组 | 多维指针 | 数组参数 | 函数指针 | 复杂指针解读)

    相关文章链接 : 1.[嵌入式开发]C语言 指针数组 多维数组 2.[嵌入式开发]C语言 命令行参数 函数指针 gdb调试 3.[嵌入式开发]C语言 结构体相关 的 函数 指针 数组 4.[嵌入式开发 ...

  10. php数组修改键值,php数组中子数组如何修改键值

    php数组中子数组修改键值的方法:使用函数[array_slice()]在数组中根据条件取出一段值,并返回,语法为[array_slice(array,offset,length,preserve)] ...

最新文章

  1. 不吹牛会死!国内音乐平台进入“大逃杀”
  2. 30天敏捷生活(5):形成个人价值观
  3. Elasticsearch 安装和使用
  4. 网易北航搞了个奇怪研究:多数人类看不懂的立体图,AI现在看懂了
  5. 另一个ExcelHelper
  6. GraphPad Prism 平均值的标准误差
  7. 在网站建设过程中主要在哪几个方面为后期的网站优打好根基?
  8. uniapp H5页面嵌入微信小程序 ios 下 video组件 播放视频 设置 border-radius overflow:hidden 不生效
  9. linux操作系统 抢占式,Linux操作系统内核抢占补丁的基本原理(2)
  10. 【项目总结】达能益力--官网
  11. 51单片机按键控制数码管0~9_7种常见的51单片机时钟电路图
  12. 深度学习基础(六)—— 从 RBM 到 DBN
  13. python 正则表达式 速查表
  14. VMware黑屏解决方法
  15. 锐捷 linux 网卡信息失败,linux折腾日记:校园网锐捷上网设置
  16. git 中 A C D M R T U X 分别解释
  17. PAT甲级A1042 Shuaffling Machine
  18. 西门子博图PLC程序无法下载到PLCSIM
  19. 影视剪辑,自学剪辑的8大技巧
  20. 谷歌浏览器主页图片设置

热门文章

  1. java开发前的准备工作_三、开发java程序前的准备工作
  2. matlab 度分秒转换成度_如何利用matlab统一处理照片亮度对比度
  3. win8 html文件怎么打开,技术员研习win8系统html文件图标变成空白的技巧
  4. tomcat中间件的默认端口号_等保2.0涉及的Apache Tomcat中间件(下)
  5. php 头像拼图,php 有趣的头像拼图
  6. 强网杯2021 [强网先锋]orw
  7. Winhex添加文件头的方法
  8. java生成验证码工具类_Java生成图形验证码工具类
  9. 在python中使用csv库以字典格式读写csv文件
  10. 15行用Python实现仿百度搜索引擎