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