PHP笔记

来源:互联网 发布:mac os 10.12镜像下载 编辑:程序博客网 时间:2024/05/16 09:23

类型

数组

PHP中的数组实际上是一个有序映射。

语法

定义数组 array()

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

array(  key =>  value     , ...     )// 键(key) 可是是一个 整数(integer)字符串(string)// 值(value) 可以是任意类型的值

如果对给出的值没有指定键名,则取当前最大的整数索引值,而新的键名将是该值加一。如果指定的键名已经有了值,则该值会被覆盖。
<?php// 这个数组与下面的数组相同 ...array(5 => 43, 32, 56, "b" => 12);// ...array(5 => 43, 6 => 32, 7 => 56, "b" => 12);?>

Warning

自 PHP 4.3.0 起,上述的索引生成方法改变了。如今如果给一个当前最大键名是负值的数组添加一个新值,则新生成的的索引将为零(0)。以前新生成的索引为当前最大索引加一,和正值的索引相同。


要改变一个值,只要给它赋一个新值。如果要删除一个键名/值对,要对它用 unset()


如果给出方括号但没有指定键名,则取当前最大整数索引值,新的键名将是该值 + 1。如果当前还没有整数索引,则键名将为 0。如果指定的键名已经有值了,该值将被覆盖。

注意这里所使用的最大整数键名不一定当前就在数组中。它只要在上次数组重新生成索引后曾经存在过就行了。
unset() 函数允许删除数组中的某个键。但要注意数组将不会重建索引。
<?php$a = array(1 => 'one', 2 => 'two', 3 => 'three');unset($a[2]);/* will produce an array that would have been defined as   $a = array(1 => 'one', 3 => 'three');   and NOT   $a = array(1 => 'one', 2 =>'three');*/print_r($a);$b = array_values($a);// Now $b is array(0 => 'one', 1 =>'three')print_r($b);?>

为什么 $foo[bar] 错了?

<?php$foo[bar] = 'enemy';echo $foo[bar];// etc?>

这样是错的,但可以正常运行。那么为什么错了呢?原因是此代码中有一个未定义的常量(bar)而不是字符串('bar'-注意引号),而 PHP 可能会在以后定义此常量,不幸的是你的代码中有同样的名字。它能运行,是因为 PHP 自动将裸字符串(没有引号的字符串且不对应于任何已知符号)转换成一个其值为该裸字符串的正常字符串。例如,如果没有常量定义为 bar,PHP 将把它替代为 'bar' 并使用之。


原创粉丝点击