php学习(7)数组

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()函数经常一起使用。

关于这一点,研究了一下:

  1. $arr1 = array("os1"=>"android","os2"=>"symbian","os3"=>"ios");  
  2.     while(list($k$v) = each($arr1)){  
  3.         echo $k."=>".$v." <br/>";  
  4.     } 
结果:

  1. os1=>android   
  2. os2=>symbian   
  3. 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"
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值