php的两种复合数据类型是什么意思_2.4PHP复合数据类型:数组和对象

Posted by 撒得一地 on 2015年9月29日 in PHP入门教程

国外稳定加速器推荐

vypr |

Nord

PHP中复合数据类型包括两种,即数组和对象。

array(数组):一组数据的集合。

object(对象):对象是类型的实例,使用new命令来创建。

数组(array)

数组是一组数据的集合,它把一系列数据组织起来,形成一个可操作的整体。数组中可以包括很多数据类型,如字符串,整型,对象,数组,资源等。

PHP中的数组实际上是一个有序映射,映射是一种把values关联到keys的类型。数组中的每个数据称为一个元素,元素包括索引(键名)和值两个部分。数组中的值还可以再是数组,这样就形成了多维数组。

定义数组的语法格式如下:

$array = ('value1','value2'......)

$array[key] = 'value'

$array = array(key1=>value1,key2=>value2......)

元素的索引(key)可以由数字或字符串组成,元素的值(value)可以是任意类型的值。

其中,参数key是数组元素的下标,value是数组下标所对应的元素。所以,数组其实用逗号分隔的键(key) => 值(value)对。

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

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

例子1:

$array  = array(

"foo"  =>  "bar" ,

"bar"  =>  "foo" ,

);

// 自 PHP 5.4 起

$array  = [

"foo"  =>  "bar" ,

"bar"  =>  "foo" ,

];

?>

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

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

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

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

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

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

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

例子2:

$array  = array(

1     =>  "a" ,

"1"   =>  "b" ,

1.5   =>  "c" ,//1.5被替换为1

true  =>  "d" ,//true被替换为1

);

var_dump ( $array );

?>

以上输出:

array(1) {

[1]=>string(1) "d"

}

在数组中,如果想取得数组中某一个数的值,可以用数组名加下标(索引)的方法取得特定值。

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

例子3:

$array = array(

1 => 3,

'a' => b,

1 => 4,

2 => 5,

5);

//如果想取得5,只要用$array[2]

echo $array[2]."
";

//修改$array[2]的值 将其值改为7

$array[2] = 7;

/*因为上面定义了两个相同的索引1,不过后面

的后定义值会覆盖前面的值,可以打印看下

*/

//print_r是php自定义函数,用于打印数组

print_r($array);

?>

上面的执行结果是先输出5,然后打印出数组:

5

Array

(

[1] => 4

[a] => b

[2] => 7

[3] => 5

)

上面值为5没定义键值,php会默认取之前最大的整数索引值的下一个整数(即原有的索引值加1)为其键值。php默认最小的整数索引值为0。

要修改某个值,通过其键名给该单元赋一个新值。要删除某键值对,对其调用 unset() 函数。

例子4:

$arr  = array( 5  =>  1 ,  12  =>  2 );

//将索引为5的值1改为42

$arr [ 5 ] =  42 ;

//删除数组中索引5和其对应的值

unset( $arr [ 5 ]);

//删除整个数组

unset( $arr );

?>

对象(object)

php中应用到的编程方法有两种:面向过程和面向对象。面向对象是模拟现实世界来进行编程的一种方法。

要创建一个新的对象 object ,使用 new 语句实例化一个类:

class  foo

{

function  do_foo ()

{

echo  "Doing foo." ;

}

}

$bar  = new  foo ;

$bar -> do_foo ();

?>

这部分放在后面讲解。

... other posts by psz1992

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

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

相关文章

Python守护进程和脚本单例运行

2019独角兽企业重金招聘Python工程师标准>>> 一、简介 守护进程最重要的特性是后台运行;它必须与其运行前的环境隔离开来,这些环境包括未关闭的文件描述符、控制终端、会话和进程组、工作目录以及文件创建掩码等;它可以在系统启动…

分析access.log

cat access.log | awk {print $4,$1,$9} | awk -F/ {print $3}| awk -F: {print $2 ":" $3,$4} | awk {print $1,$3,$4} | uniq -c | sort -n转载于:https://www.cnblogs.com/olderblue/p/4778339.html

AD20学习笔记4---网表导入及模块化布局设计

前言: 本文学习视频是B站点击率第一的凡亿教育《Altium Designer 20 19(入门到精通全38集)四层板智能车PCB设计视频教程》,视频地址:Altium Designer 20 19(入门到精通全38集)四层板智能车PCB设…

Paoding-Rose学习

* HttpServletRequest.getContextPath 获取web程序root。如果是默认位置,返回””空串,否则返回 /根路径名 * rose是如何扫描到资源的 利用spring提供的类扫描类和jar* rose建立匹配树的过程 传入根节点和List,按照路径建立每个节点 * Module…

楪祈机器人_饥荒 Inori楪祈人物MOD V20161211

使用说明:1.解压缩2.复制所有文件到游戏目录mods3.启动游戏,点击mods(模组)加载MOD适用游戏版本:理论上支持所有版本的饥荒(普通,巨人,海难,联机版)MOD说明:饥荒 Inori楪祈人物MOD;由…

javascript 模块化

2019独角兽企业重金招聘Python工程师标准>>> 一直好奇像node.js,require.js的模块化是怎么做的,在看了《你不知道的javascript》后,对js的模块化有了一些简单的了解。这本书真的还不错。 书里讲述了js的模块化的原理 和 现代js实现模块化的简…

AD20学习笔记5---PCB设计规则设置及PCB手工布线

前言: 本文学习视频是B站点击率第一的凡亿教育《Altium Designer 20 19(入门到精通全38集)四层板智能车PCB设计视频教程》,视频地址:Altium Designer 20 19(入门到精通全38集)四层板智能车PCB设…

理论物理极础9:相空间流体和吉布斯-刘维尔定理

莱尼喜欢看河,尤其喜欢看漂浮物顺流而下。他猜想漂浮物如何穿过礁石,如何陷入漩涡。但是河流整体,水量,流切变,河的分流和汇聚,这是莱尼所看不到的。 相空间流体 在经典力学里,注视一个特别的初…

ComponentName的意思

ComponentName是用来打开其它应用程序中的Activity或服务的。 使用方法: Intent inew Intent();i.setComponent(new ComponentName(String packageName,String activityName ));startActivity(i); 转载于:https://www.cnblogs.com/hrhguanli/p/3861243.html

nginx没有worker进程_如何优雅地关闭worker进程?

点击上方“武培轩”,选择“设为星标”技术文章第一时间送达!之前我们讲解 Nginx 命令行的时候,可以看到 Nginx 停止有两种方式,分别是 nginx -s quit 和 nginx -s stop,其中 stop 是指立即停止 Nginx,而 qu…

[Python3]Python面向对象的程序设计

[Python3]Python面向对象的程序设计 一、面向对象的程序设计的由来 1.第一阶段:面向机器,1940年以前 最早的程序设计都是采用机器语言来编写的,直接使用二进制码来表示机器能够识别和执行的指令和数据。 简单来说,就是直接编写 0 和 1 的序列来代表程序语…

RC电路输出波形的时域与频域分析

RC一阶电路为例进行时域和频域分析,激励Us为方波,以Uc作为输出的波形相当于积分电路的输出曲线,以Ur作为输出的波形相当于微分电路的输出曲线。电容对输入电压具有平滑作用,平滑程度与时间常数有关,衰减程度与带宽设计…

JQuery之编写弹窗

演示地址&#xff1a;http://sandbox.runjs.cn/show/irefekbs <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Document</title><style>*{ margin: 0; padding: 0;}#login { z-index:9999…

[ext/iconv/iconv.lo] Error 1

办法1&#xff1a; wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.13.1.tar.gz tar -zxvf libiconv-1.13.1.tar.gz cd libiconv- 1.13.1 ./configure make make install 办法2&#xff1a; wget http://down.wdlinux.cn/in/iconv_ins.sh sh iconv_ins.sh转载于:https:/…

多麦克风做拾音的波束_麦克风阵列是什么 有哪些关键技术?

麦克风阵列是什么 有哪些关键技术&#xff1f;亚马逊Echo和谷歌Home争奇斗艳&#xff0c;除了云端服务&#xff0c;他们在硬件上到底有哪些差异&#xff1f;我们先将Echo和Home两款音箱拆开来看&#xff0c;区别最大的还是麦克风阵列技术。Amazon Echo采用的是环形61麦克风阵列…

如何用AD20打开ddb文件

用AD20直接打开ddb文件会报错&#xff0c;在AD20中使用导入向导才是ddb文件的正确打开方式。 1.用AD20直接打开ddb文件的报错提示 2.使用导入向导打开ddb文件 除了以下两处关键设置的地方&#xff0c;一路next就行。

Codeforces Round #419 (Div. 2)

1.题目A&#xff1a;Karen and Morning 题意&#xff1a; 给出hh:mm格式的时间&#xff0c;问至少经过多少分钟后&#xff0c;该时刻为回文字符串&#xff1f; 思路&#xff1a; 简单模拟&#xff0c;从当前时刻开始&#xff0c;如果hh的回文rh等于mm则停止累计。否则&#xff…

Java NIO 系列教程

Java NIO&#xff08;New IO&#xff09;是从Java 1.4版本开始引入的一个新的IO API&#xff0c;可以替代标准的Java IO API。本系列教程将有助于你学习和理解Java NIO。感谢并发编程网的翻译和投递。 &#xff08;关注ITeye官微&#xff0c;随时随地查看最新开发资讯、技术文章…

使用语句修改数据表结构

查询表信息&#xff1a; sp_help dbo.T_User; 修改columnName 字段为空 alter table dbo.T_User alter column columnName datetime null; 修改columnName 默认值 ALTER TABLE dbo.T_User ADD CONSTRAINT [DF_T_User_columnName ] DEFAULT 0 FOR [columnName ];转载于:https://…

变换上三角矩阵_关于马尔可夫矩阵的一些个人研究成果、思考过程及相关解释...

在几个月以前&#xff0c;曾经有一位知乎好友邀请我回答一个问题&#xff1a;“如何证明马尔可夫矩阵至少存在一个所有分量均不小于零的特征向量。”当时我思考了大概半个小时&#xff0c;给出了严谨的证明。事后由该问题引发我至少三度思考&#xff0c;对于此问题&#xff0c;…