内容要点——

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;