内容要点——
1、什么是数组
2、自定义键数组
3、数组中的数组
4、数组的排序
5、数组中指针操作
6、统计数组个数
7、将数组转换为标量变量
3、数组中的数组
第一种:传统意义上(较复杂)
<meta http-equiv="Content-Type" content="text/html;charset=GBK"> <?php //创建一个新数组; $products=array( array('苹果1',6,28.8); array('苹果2',2,18.8); array('苹果3',4,21.8);
第二种:使用两个for循环实现
<meta http-equiv="Content-Type" content="text/html;charset=GBK"> <?php //创建一个新数组; $products=array( array('苹果1',6,28.8); array('苹果2',2,18.8); array('苹果3',4,21.8); ); //首先求出长度 //echo count($products); for($i=0;$i<count($products);$i++){ for($j=0;$j<count($products[i]);$j++){ echo $products[$i][$j]; } } ?>
第三种:若含有键值对key=>value,采用foreach()函数遍历实现
$products=array(
array('商品名'=>'苹果1','数量'=>6,'价格'=>28.8);
array('商品名'=>'苹果2','数量'=>2,'价格'=>18.8);
array('商品名'=>'苹果3','数量'=>4,'价格'=>21.8);
);
for($i=0;$i<count($products);$i++){
foreach($products[$i] as $key=>$value){
echo $key.'--'.$value.'|';
}
echo '<br>';
}
第四种:list()函数
使用该函数,首先利用该函数把数组products中的每一个值赋值给一些变量,变量中包含两个参数(key,value);其次再将整体用“!!”转换为布尔类型,进行判断
for($i=0;$i<count($products);$i++){ while(!!list($key,$value)=each($products[$i])){ echo $key.'--'.$value.'|'; } echo '<br>'; }
4、数组的排序
(1)sort()函数——按照字母顺序排序
a、一个参数
<?php $fruits=array('lenen','orange','banna','apple'); sort($fruits); foreach($fruits as $key => $value){ echo "fruits["key"]=".$value."\n"; } ?> 结果:fruits[0]=apple fruits[1]=banna fruits[2]=lenen fruits[3]=lenen
b、两个参数
$numbers=array('2','12');
echo sort($numbers,sort_numberic); //用数字进行比较
//第二个参数表示以字符串进行比较;
echo sort($numbers,sort_string);
按照数字,以整体来看;按照字符串,只看第一个参数
(2)asort()函数
该函数可保留索引关系,
示例——将sort()函数sort变为asort;
结果:fruits[4]=apple fruits[3]=banna fruits[0]=lenen fruits[1]=orange
(3)arsort()函数
代码示例 —— “在原有的asort()函数加"r"为arsort()”
该函数可将原来的排序函数调过来
结果:
(4) shuffle()函数表示对数组进行随机排序(打乱顺序的随机)
<?php
$imgs=array('m1.jpg','m2.jpg','m3.jpg');
//对数组随机打乱;
shuffle($imgs);
for($i=0;$i<3;$i++){
echo '<img src="images/'.$imgs[$i].'" style="margin:10px" />';
echo "\n";
}
?>
(5)array_reverse()函数表示对数组反向排序
将上述代码函数变为array_reverse(),并赋值给$a,排序图片3、2、1
(6)a、array_unshift()函数 ——在数组的开头插入数据
b、array_shift()函数——删除数组头第一个元素
<?php
$userName=array('zaho');
//在开头插入数据;
array_unshift($userName,'zhang');
//在结尾插入数据
array_push($userName,'tang');
print_r();
?>
(7)a、array_push()函数——将数组的末尾插入数据
b、array_pop()函数——删除并返回数组末尾的一个元素
(8)array_rand()(取出数据的随机)
返回数组中的一个或多个键
<?php
$fruit=array('banner','orange','apple');
//这个函数用于获取一个数组中的键
//第二个参数表明随机获取几个
$a=array_rand($fruit,1); //获取一个;
$b=array_rand($fruit,2); //获取两个;
echo $fruit[0]; //获取一个时直接获取;
echo $fruit[$b[0]];
echo $fruit[$b[1]]; //获取两个需要使用数组的概念。
?>
5、数组中指针操作
数组中浏览——each()、current()、reset()、end()、next()、pos()、prev()
(1)将指针前移一个元素——用next()或each()
each($array_name):在指针前移一个位置之前返回当前的元素
next($array_name):指针前移,然后再返回新的当前元素
(2)反向遍历一个数组——用end()和prev()
prev()和next()函数相反,
作用:将当前指针往回移一个位置然后再返回新的当前元素(将指针倒回一步)
<?php
$userAges=array('zhao','zahng','tang');
//默认情况下,指向指针的第一个元素;
//获取指针得当前元素,current并没有把指针移到下一步;
echo current($userAges);
echo next($userAges);
echo current($userAges);
echo reset($userAges);
?>
6、统计数组个数
两种方法——
(1)count($array_name)、sizeof($array_name)
——计算数组的个数,传递一个参数,数组名
(2)array_count_values($array_name)
——计算数组中所有值出现的次数
$userNames=array(1,8,8,3,6,4,3,4,1,4);
//array_count_values——统计数组中所有值出现的次数
print_r(array_count_values($userNames));
结果:array(1:2 8:2 3:2 4:3 6:1)
7、将数组转换为标量变量
对于一个非数字(如字母)索引数组,而该数组又有许多关键字-值对,可以用函数extract()将他们转换为 一系列的标量变量。
用法:
extract()作用是通过一个数组创建一系列的标量变量,这些变量名称必须为数组中关键字名称,而变量值 则是数组中的值
<?php
$a=$b=$c=''; //对下标键值进行初始化;
$fruits=array('a'=>'apple','b'=>'banner','c'=>'orange');
//通过标量函数将字符串key(键)设置为变量,然后将值赋值给这个变量;
extract($fruits);
echo $a;
echo $b;
echo $c;