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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值