2.4PHP复合数据类型:数组和对象

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

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:
<?php
$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:
<?php
$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:
<?php
$array = array(
    1 => 3,
    'a' => b,
    1 => 4,
    2 => 5,
    5);
//如果想取得5,只要用$array[2]
echo $array[2]."<br/>";

//修改$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:
<?php
$arr  = array( 5  =>  1 ,  12  =>  2 );
//将索引为5的值1改为42
$arr [ 5 ] =  42 ;  
//删除数组中索引5和其对应的值              
unset( $arr [ 5 ]);  
//删除整个数组
unset( $arr );     
 ?> 

对象(object)
php中应用到的编程方法有两种:面向过程和面向对象。面向对象是模拟现实世界来进行编程的一种方法。
要创建一个新的对象 object ,使用 new 语句实例化一个类: 

<?php
 class  foo
 {
    function  do_foo ()
    {
        echo  "Doing foo." ; 
    }
}
 $bar  = new  foo ;
 $bar -> do_foo ();
 ?> 

这部分放在后面讲解。

标签:, ,

上一篇:

下一篇:

相关推荐

网站地图|XML地图

Copyright © 2015-2024 技术拉近你我! All rights reserved.
闽ICP备15015576号-1 版权所有©psz.