php 数组的定义方法,PHP中数组定义的几种方法

Array 数组

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

一般来说定义方法如下面几种:

方法一:

1$a=array(1,2,4,5,6);

1

2

3

4

5<?php

$array=array('a','b','c');

$array[]='simon';

print_r($array);

?>

运行结果如下所示。

Array

(

[0]=>a

[1]=>b

[2]=>c

[3]=>simon

)

方法二:

1$a=array(key1=>value1,key2=>value2,key3=>value3);

方法三:

1

2$a[key1]=value1;

$a[key2]=value2;

方法四:通过中括号[]定义数组

php 5.4版以后可以这么写,新增的数组简写语法。

php 5.3版及以前的版本不接受这么写...

1

2

3

4$data = [

'start_time' =>'123',

'end_time' =>'456'

];

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

语法

定义数组 array()

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

array(  key =>  value

, ...

)

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

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

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

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

Example #1 一个简单数组

1

2

3

4

5

6

7

8

9

10

11

12<?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 类型强制与覆盖示例

1

2

3

4

5

6

7

8

9<?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 键名

1

2

3

4

5

6

7

8

9<?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 没有键名的索引数组

1

2

3

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 仅对部分单元指定键名

1

2

3

4

5

6

7

8

9<?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。

用方括号语法访问数组单元 ¶

数组单元可以通过 array[key] 语法来访问。

Example #6 访问数组单元

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15<?php

$array =array(

"foo" =>"bar",

42  => 24,

"multi" =>array(

"dimensional" =>array(

"array" =>"foo"

)

)

);

var_dump($array["foo"]);

var_dump($array[42]);

var_dump($array["multi"]["dimensional"]["array"]);

?>

以上例程会输出:

string(3) "bar"

int(24)

string(3) "foo"

Note:

方括号和花括号可以互换使用来访问数组单元(例如 $array[42] 和 $array{42} 在上例中效果相同)。

自 PHP 5.4 起可以用数组间接引用函数或方法调用的结果。之前只能通过一个临时变量。

自 PHP 5.5 起可以用数组间接引用一个数组原型。

Example #7 数组间接引用

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15<?php

function getArray() {

return array(1, 2, 3);

}

// on PHP 5.4

$secondElement = getArray()[1];

// previously

$tmp = getArray();

$secondElement =$tmp[1];

// or

list(,$secondElement) = getArray();

?>

Note:

试图访问一个未定义的数组键名与访问任何未定义变量一样:会导致 E_NOTICE 级别错误信息,其结果为 NULL。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/411496.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[html] html和html5有什么区别呢?

[html] html和html5有什么区别呢&#xff1f; 1.HTML5简化了很多细微的语法&#xff0c;例如doctype的声明&#xff0c;只需要写<!doctype html>就行了。HTML5与HTML5&#xff0c;XHTML1兼容&#xff0c;但是与SGML不兼容。 2.新增与语义化标签【header、footer、sectio…

new关键字对类成员的阻断

昨天终于对new关键字对类成员的阻断作用有了比较清晰的认识&#xff0c;“对类成员的阻断”是王涛大哥在其作品《你必须知道的.NET》的说法&#xff0c;昨天在园里看到一位前辈戏称之为“封印咒术”&#xff0c;我感觉这个说法很贴切。比如Sons类继承自Fathers类&#xff0c;在…

[html] 用一个div模拟textarea的实现

[html] 用一个div模拟textarea的实现 上面的代码实现了div变为可编辑状态,但是textarea标签可以在右下角自由拉伸<div class"edit" contenteditable"true" style"resize: both"></div>这样就可以啦个人简介 我是歌谣&#xff0c;欢…

LOJ 2979 「THUSCH 2017」换桌——多路增广费用流

题目&#xff1a;https://loj.ac/problem/2979 原来的思路&#xff1a; 优化连边。一看就是同一个桌子相邻座位之间连边、相邻桌子对应座位之间连边。 每个座位向它所属的桌子连边。然后每个人建一个点&#xff0c;向若干桌子连边。 因为连边的桌子是区间&#xff0c;所以线段树…

java如何实现红包雨,一个简单的红包雨实现

效果图如下&#xff1a;我的视频 1_20170207191503.gif这个简单动画的主要思路&#xff1a; 将多个 红包View 通过 属性动画 从屏幕顶端 飘落到 屏幕底部。只不过在飘落的动画过程中&#xff0c;加入了一些随机路线 Path。主要涉及到的知识点&#xff1a;1.Path 和 PathMeasure…

【原】基于Windows Media Player, 写自己的播放器【有源码,可下载整个工程】

最近有客户问我&#xff0c;怎么把Windows Media Player 嵌套在自己的项目中。 以前我在Delphi下玩过Windows Media Player&#xff0c;可是在Microsoft Visual Studio 2008 没有测试过。 到网上搜索了一把&#xff0c;果然得到很多例子。 其中CSDN上有个例子写的不错&#xff…

[html] 说说你对cookie和session的理解

[html] 说说你对cookie和session的理解 cookie: 可以通过客户端, 服务端设置, 容量小, 可以通过设置domain来实现同步登录, 除了name, value, 它还有多个选项, domain, path, secure, expires, 客户端和服务端可以通过cookie来通讯, 传递信息session: 由服务端设置并发起, 是服…

Oracle数据库php短连接,PHP 连接 Oracle

起因由于项目的数据库需要用客户购买的Oracle数据库&#xff0c;所以需要php安装oci扩展。运行环境php : 7.2系统: windows10oracle: 11gR2安装相关环境由于php的oci8扩展还是需要使用到oracle的一些包&#xff0c;所以先下载这一些。下载完成后解压缩这个压缩包&#xff0c;并…

java的内存模型--jmm

java虚拟机运行时的数据区 1.线程共享区&#xff08;方法区&#xff0c;Java堆&#xff09; 2.线程独占区&#xff08;虚拟机栈&#xff0c;本地方法栈&#xff0c;程序计数器&#xff09; 程序计数器&#xff1a;记录当前线程所执行到的字节码的行号转载于:https://www.cnblog…

计算机考研文章精选[转载]

今天在网上看到了一篇超全的计算机考研文章集合&#xff0c;里面有很多曾经看过&#xff0c;挺经典的&#xff0c;于是忍不住收藏下来&#xff0c;希望对那些即将报考计算机研究生和工作了仍不放弃考研的朋友有所帮助 计算机考研常见问题解答 地址&#xff1a;http://ww…

PHP鼠标滑过变色命令,WordPress鼠标悬停变色的修改方法

原创内容&#xff0c;转载请注明出处&#xff1a;https://www.myzhenai.com.cn/post/3253.html关键词&#xff1a;wordpress 鼠标 悬停 变色我总是觉得我两个WordPress博客的主题里使用的鼠标悬停变色的颜色不太喜欢&#xff0c;就是当鼠标划过或停留在某一个链接上的时候&…

圆面积异常

package zengliang;import java.util.*;public class Suv {public static void main(String[] args) {// TODO 自动生成的方法存根try{double r,s;final double PI 3.14;Scanner scnew Scanner(System.in);System.out.println("输入圆的半径&#xff1a;");r sc.ne…

[html] html5哪些标签可以优化SEO?

[html] html5哪些标签可以优化SEO? 跟标签语义化有关&#xff0c;从上往下&#xff1a;meta titlenav header main article section aside footerfigure picture time video audio个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#xff0c; 但坚持…

sql语句的效率

1、尽量避免反复访问同一张或几张表&#xff0c;尤其是数据量较大的表&#xff0c;可以考虑先根据条件提取数据到临时表中&#xff0c;然后再做连接。 2、尽量避免使用游标&#xff0c;因为游标的效率较差&#xff0c;如果游标操作的数据超过1万行&#xff0c;那么就应该改写&a…

php跳转分站,PHP判断IP并转跳到相应城市分站的方法

本文实例讲述了PHP判断IP并转跳到相应城市分站的方法。分享给大家供大家参考。具体实现方法如下&#xff1a;class QQWry{var $StartIP0;var $EndIP0;var $Country;var $Local;var $CountryFlag0;// 标识 Country位置// 0x01,随后3字节为Country偏移,没有Local// 0x02,随后3字节…

SpringBoot学习笔记(9)----SpringBoot中使用关系型数据库以及事务处理

在实际的运用开发中&#xff0c;跟数据库之间的交互是必不可少的&#xff0c;SpringBoot也提供了两种跟数据库交互的方式。 1. 使用JdbcTemplate 在SpringBoot中提供了JdbcTemplate模板类&#xff0c;JdbcTemplate提供的方法进行增删改查的操作。 首先需要在pom文件中添加依赖:…

[html] webSocket怎么做兼容处理?

[html] webSocket怎么做兼容处理&#xff1f; Socket.IO:Adobe Flash Socket&#xff08;缺点&#xff1a;需要在服务器上打开一个额外的端口&#xff0c;默认为10843&#xff09;Ajax long pollingAjax multipart streamingForever iframeJSONP polling个人简介 我是歌谣&am…

农民第六次拯救中国

农民第六次拯救中国 英国《金融时报》中文网专栏作家吴晓波 2008-11-18 1989年&#xff0c;我第一次行走中国。在此之前&#xff0c;我是一个成长在江南城市里的文学青年&#xff0c;我只读到过课本上的中国&#xff0c;在用5个月时间踏遍南部中国之后&#xff0c;我在社会底层…

java base64转bitmap,如何将Bitmap位图与base64字符串相互转换

先引用delphi自带的单元uses EncdDecd;然后就可以使用下面二个函数了:///将Bitmap位图转化为base64字符串function BitmapToString(img:TBitmap):string ;varms:TMemoryStream;ss:TStringStream;s:string;beginms : TMemoryStream.Create;img.SaveToStream(ms);ss : TStringStr…

剑指offer——用两个栈实现队列

题目&#xff1a;用两个栈来实现一个队列&#xff0c;完成队列的Push和Pop操作。 队列中的元素为int类型。 解题思路&#xff1a; 当stack2不为空时&#xff0c;在stack2中的栈顶元素是最先进入队列的元素&#xff0c;可以弹出。当stack2为空时&#xff0c;我们把stack1中的元素…