1. 数组定义:
$arr1 = array('0' => 'a', '1' => 'b');
或者:
$arr2[0] = 'a';$arr2[1] = 'b';
输出结果是一样的:
Array ( [0] => a [1] => b )
Array ( [0] => a [1] => b )
同理:
$arr1 = array('a' => '0', 'b' => '1');
$arr2['a'] = '0';
$arr2['b'] = '1';
如果不指定位置而给未定义的数组元素赋值,那么将依次对数组的元素进行赋值。
$arr2[] = 'a';
$arr2[] = 'b';
2. each()函数:
返回 array 数组中当前指针位置的键值对,并向前移动数组指针。键值对被返回为四个单元的数组,新键名顺序为1,value,0,key。1 和 value 的值为数组单元的值,0 和 key 的值为数组单元的键名。
如果数组指针已经到了结尾,再移动,则返回false。
3. list()函数:
只对有数字索引单元的数组起作用,数字索引从0开始。按照数字索引0、1、2、3、......的顺序,依次把相应单元的值对应赋值给多个变量。
list()函数与each()函数经常一起使用。
关于这一点,研究了一下:
- $arr1 = array("os1"=>"android","os2"=>"symbian","os3"=>"ios");
- while(list($k, $v) = each($arr1)){
- echo $k."=>".$v." <br/>";
- }
- os1=>android
- os2=>symbian
- os3=>ios
第一点:虽然调用each()函数返回的是四个单元的数组,但只有索引为1、0的单元对list()函数有用。
第二点:赋值时并不是按照数组中的单元的顺序,而是按照数字索引从0开始的顺序依次赋值。所以数字索引为0的单元的值,被赋给list()函数的第一个参数;数字索引为1的单元的值,被赋给list()函数的第二个参数。
※没有设置索引的数组,默认是数字索引,索引为0、1、2、3、......。
试了一下各种调用list()函数出错的情况。明白以上内容,当使用list()函数出错时,就知道原因啦。
另外,list()函数是从最右边的参数开始赋值的。但不要理解成把数组索引为0的单元的值赋给最右边的参数哦!list()函数已经知道每个参数应该赋予哪个值,只不过是从最右边的参数开始进行这件事情。
如果list()函数的参数是单纯的变量,那不用担心这一点,输出变量的时候一切正常。但是如果参数是具有索引的数组的单元,那么输出整个数组时,该数组中的单元的顺序,与list()函数参数中的数组单元的顺序,是相反的。
例子:
<?php
$info = array('coffee', 'brown', 'caffeine');
list($a[0], $a[1], $a[2]) = $info;
var_dump($a);
?>
产生如下输出(注意单元顺序和 list() 语法中所写的顺序的比较):
array(3) {
[2]=>
string(8) "caffeine"
[1]=>
string(5) "brown"
[0]=>
string(6) "coffee"
}