6.数组(2)——数组中的排序、指针操作、统计个数、转换标量变量

内容要点——

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);
);echo "|".$products[0][0]."|".$products[0][1]"."|".$products[0][2];?>

结果:|苹果1|6|28.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()”
该函数可将原来的排序函数调过来

结果: fruits[1]=orange  fruits[0]=lenen fruits[3]=bannafruits[4]=apple 


(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;
//echo $a,$b,$c; //三个变量的简写;?>



结果:apple,banner,orange



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值