PHP中的数组(Array)
定义数组的方式:[*] 使用array内置关键字
[*] 使用[]定义
[*] 直接赋值
array(18000,180,18)),array('rose','girl',18));
print_r($arr);
echo '';
//按照下标分
//下标是Int类型的 数组 叫索引数组
//下标是string类型的 数组 叫关联数组
//关联数组
$arr = array('username'=>'fengfeng','sex'=>'girl','age'=>18,'boyfriend'=>array('xiaohei','xiaobai','xiaohuang'));
print_r($arr);
//索引数组
$brr = array( 0=>'jack',1=>'boy',2=>23);
print_r($brr);
注意:在PHP中,索引数组的下标可以是非连续的值,只要在初始化时指定非连续的下标值即可。如果指定的下标值已经声明过,则属于对变量重新赋值。(前边已指定的索引值将被覆盖)。如果没有指定索引值的元素与指定索引索引值的元素混在一起赋值,没有指定索引值的元素的默认索引值,将紧跟指定索引值元素中的最高的索引值递增。
'gaomou','A gongsi','beijingshi',14=>'0103243223','gaoluofeng@qq.com');
print_r($count);
结果:
Array
(
[0] => 1
[14] => 0103243223
[15] => A gongsi
[16] => beijingshi
[17] => gaoluofeng@qq.com
)
访问数组的方式:
访问一维数组是使用数组的名称和索引值,二维数组也一样。
'gaomou','A gongsi','beijingshi',14=>'0103243223','gaoluofeng@qq.com');
echo $count[14];
输出结果:0103243223
直接赋值下标的分析:
a
[1] => Array
(
[0] => b
[1] => c
[2] => Array
(
[0] => d
)
)
[2] => Array
(
[0] => f
)
[3] => Array
(
[0] => Array
(
[0] => e
)
)
)
count()获取 数组单元 个数 或者 对象成员 属性个数
$value){
循环体
}
第一种格式遍历给定的$arr数组。每次循环中,当前元素的值被赋给变量$value,并且把数值内部的指针向后移动一步,因此下一次循环中将会得到该数组的下一个元素,直到数组的结尾停止循环,结束数组的遍历。
第二种格式和第一种格式是做同样的事情,只是当前元素的键名也会在每次循环中被赋给变量$key。
'zhuren','username' =>'xiaozhang',9=>'jiaoshou','gaolaoshi'];
//第一种,其中$v是任意值,随便取
foreach($arr as $v){
echo $v.'';
}
echo '';
//第二种,将数组中每个单元的键和值全部输出,其中$k是键、$v是值,$k,$v同样是任意值,可随便取
foreach($arr as $k=>$v){
echo '键:'.$k.'=>值'.$v.'';
}
结果:
daoyan
zhuren
xiaozhang
jiaoshou
gaolaoshi
键:0=>值daoyan
键:user1=>值zhuren
键:username=>值xiaozhang
键:9=>值jiaoshou
键:10=>值gaolaoshi
3、联合使用list()、each()和while循环遍历数组
each()函数
each()函数需要传递一个数组作为参数,返回数组中当前元素的键/值对,并向后移动数组指针到下一个元素的位置。
键值对被返回为四个单元的数组,键名为 0,1,key 和 value。单元 0 和 key 包含有数组单元的键名,1 和 value 包含有数据。
如果内部指针越过了数组的末端,则 each() 返回 FALSE。
lily
=> lily
[0] => 0
=> 0
)
2Array
(
[1] => girl
=> girl
[0] => 1
=> 1
)
3Array
(
[1] => age
=> age
[0] => 2
=> 2
)
4Array
(
[1] => xiaoming
=> xiaoming
[0] => 3
=> 3
)
4.array(4) {
[1]=>
string(8) "xiaoming"
["value"]=>
string(8) "xiaoming"
[0]=>
int(3)
["key"]=>
int(3)
}
5.bool(false)
list()函数
它不是真正的函数,而是PHP的语言结构。
list() 用一步操作给一组变量进行赋值,即把数组中的值赋给一些变量。
注: list() 仅能用于数字索引的数组并假定数字索引从0开始。
语法格式:
list(mixed varname,mixed...) =array_expression
list()语句和其他函数在使用上有很大的区别,并不是直接接收一个数组作为参数。而是通过“=”运算符以赋值的方式,将数组中每个元素的值,对应的赋值给list()函数中的每个参数。list()函数又将它中的每个参数转换为直接可以在脚本中使用的变量。
'zhanglaoshi','user2'=>'lilaoshi','user3'=>'wanglaoshi'];
while(list($key,$value) = each($arr)){
echo 'key:'.$key.'=>value'.$value.'';
}
结果:
key:user1=>valuezhanglaoshi
key:user2=>valuelilaoshi
key:user3=>valuewanglaoshi
注意:在执行 each() 之后,数组指针将停留在数组中的下一个单元或者当碰到数组结尾时停留在最后一个单元。如果要再用 each 遍历数组,必须使用reset( )。
while和foreach语句两种方法的区别:
相同点:两者遍历数组的结果相同。
不同点:在使用while语句遍历数组之后,each()语句已经将传入的数组参数内部指针指向了数组的末端。当再次使用while语句遍历同一个数组时,数组指针已经在数组的末端,each()语句直接返回FALSE,while语句不会执行循环。只有在while语句执行之前先调用一下reset()函数,重新将数组指针指向第一个元素。
而foreach语句会自动重置数组的指针位置,当foreach开始执行时,数组内部的指针会自动指向第一个单元。这意味着不需要在foreach循环之前调用reset函数。
简单的说就是:while需要先调用一下reset()函数,而foreach不需要。
数组指针相关操作函数:
current();
key();
next();
prev();
end();
reset();
页:
[1]