`

第5章 数组

 
阅读更多

Demo1.php

<?php
	//创建一个数组变量
	$userNames = array('张三','李四','王五');
	//将这个数组打印出来
//	echo $userNames;//Array
//	$userName = '张三';
//	echo $userName;//张三
	//如果你想打印出这个数组的某一个元素
	//那你必须找到这个元素的下标,键(key)
	//0,1,2
	//echo $userNames[2];//王五
	//print_r --  打印关于变量的易于理解的信息。 
	//print_r($userNames);//Array ( [0] => 张三 [1] => 李四 [2] => 王五 ) 
	//$userNames 是一个数组变量,而 $userNames[x] 可以理解成数组变量下的小变量 
	$userNames[4] = '赵七';
	print_r($userNames);//Array ( [0] => 张三 [1] => 李四 [2] => 王五 [4] => 赵七 ) 
	
?>

 

Demo2.php

<?php
	//range --  建立一个包含指定范围单元的数组 
	//range 包含指定数组
	//包含两种东西,一种叫做键(key),一种叫做值(value)
	//key 是自动生成的,默认从 0 开始,每次 +1
	//value 是你自己赋值的
	//$numbers = range(1,4);
	//print_r($numbers);	//Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 ) 
//	$letters = range('a','e');
//	print_r($letters);//Array ( [0] => a [1] => b [2] => c [3] => d [4] => e ) 
//	echo $letters[3];
?>

 

Demo3.php

<?php
	$userNames = array('张三','李四','王五');
	//通过循环来显示数组里的所有值
	//从 0-5 之间循环
//	for($i=0;$i<3;$i++){
//		echo ($i+1).'-->'.$userNames[$i].'<br/>';
//	}
	/*
	 * 1-->张三
	 * 2-->李四
	 * 3-->王五
	 * */	
//	echo count($userNames); //3
//	for($i=0;$i<count($userNames);$i++){
//		echo ($i+1).'-->'.$userNames[$i].'<br/>';
//	}
	//如果 key 不是从 0 开始,或者说,压根不是数字,那么就无法用无精打采循环来实现显示数据列表
	//通过 foreach 循环来遍历数组,这方式好处,不需要去考虑 key
//	foreach ($userNames as $value){
//		echo $value.'<br/>';
//	}
	//foreach 遍历 $key => $value
//	foreach ($userNames as $keyaaa => $value){
//		echo $keyaaa.'-->'.$value.'<br/>';
//	}
	/**
	 * 0-->张三
	 * 1-->李四
	 * 2-->王五
	 * */	
	//所以,你要先做个判断
	if(is_array($userNames)){
		foreach ($userNames as $key => $value){
			echo $key.'-->'.$value.'<br/>';
		}
	}else{
		echo $userNames;
	}
?>

 

Demo4.php

<?php
	$userNames = array('张三','李四','王五');
	print_r($userNames);
	echo $userNames[0];
?>

 

Demo5.php

<?php
	//创建自定义键(key)的数组
	//如果你不去声明元素的 key ,那么从开始 0 计算
//	$userNames = array('baidu'=>'张三','李四','王五');
//	print_r($userNames); //Array ( [baidu] => 张三 [0] => 李四 [1] => 王五 ) 
	$userNames = array('baidu'=>'张三','taobao'=>'李四','360'=>'王五');
	print_r($userNames); //Array ( [baidu] => 张三 [taobao] => 李四 [360] => 王五 )
	echo $userNames['baidu'];
?>

 

Demo6.php

<?php
	//先创建只一个元素的数组
	$userAge = array('chaoyv'=>25);
	//打印出 chaoyv 的年龄
	//echo $userAge['chaoyv']; //25
	//将以前的数组,追加两条,这里说的下标,键,key 是一个东西
	$userAge['yike'] = 30;
	$userAge['wife'] = 24;
	print_r($userAge);
?>

 

Demo7.php

<?php
	//array 关键字都可以不要,就能创建数组
	$userAges['chaoyv'] = 25;
	//print_r($userAges); //Array ( [chaoyv] => 25 ) 
	$userAges['yike'] = 30;
	$userAges['wife'] = 24;
	//print_r($userAges); //Array ( [chaoyv] => 25 [yike] => 30 [wife] => 24 ) 
	//这里无法使用 for 循环将数据全部显示出来,只能通过 foreach 遍历出来
	foreach ($userAges as $value){
		echo $value.'<br/>';
	}
?>

 

Demo8.php

<?php
//	$userAges['chaoyv'] = 25;
//	$userAges['yike'] = 30;
//	$userAges['wife'] = 24;
	$username = array('世'=>'何开','血'=>'赵血儿','学'=>'墨学之');
	//print_r($username);
	//each 的使用
	//each --  返回数组中当前的键/值对并将数组指针向前移动一步 
	//这里有一个指针,默认情况下,指针是指定第一个键值对
	//这里的第一个键值对是 '世'=>'何开'
	//如果each($username),那么获取的就是第一个键值对 '世'=>'何开'
	//each 这个函数返回的是一个数组,
	//each 将第一个键值对获取到,然后包装成一个新的数组。
	//print_r(each($username));
	//相当于 $a =  Array ( [1] => 何开 [value] => 何开 [0] => 世 [key] => 世 ) 
	//$a = each($username);
	//echo $a[value];
	print_r(each($username));
	echo '<br/>';
	print_r(each($username));
?>

 

Demo9.php

<?php
	$username = array('世'=>'何开','血'=>'赵血儿','学'=>'墨学之');
	//这里,我们怎么使用 each 来循环所有的数据呢?
	//相当于 $a =  Array ( [1] => 何开 [value] => 何开 [0] => 世 [key] => 世 ) 
	//两个感叹号,表示真是存在的数据转换成布尔值
//	echo !!each($username);//说明有数据,有数据,用布尔值的理念就是真(true)
//	echo !!each($username);
//	echo !!each($username);
//	echo !!each($username);//第四个是假的
	
	while (!!$a = each($username)){
		echo $a['key'].'-->'.$a['value'].'<br/>';
	}
	
//	$a = each($username);
//	echo $a[0].'---'.$a[1].'<br/>';	
//	$a = each($username);
//	echo $a[0].'---'.$a[1].'<br/>';	
//	$a = each($username);
//	echo $a[0].'---'.$a[1].'<br/>';	
//	/**
//	 * 世---何开
//	 * 血---赵血儿
//	 * 学---墨学之
//	 * */
?>

 

Demo10.php

<?php
//	$usernames = array('世'=>'何开','血'=>'赵血儿','学'=>'墨学之');
//	$a = each($usernames);
//	//世-->何开
//	echo $a['key'];
//	echo '-->';
//	echo $a['value'];
//	$a = each($usernames);
//	//血-->赵血儿
//	echo $a['key'];
//	echo '-->';
//	echo $a['value'];
	
//	//list --  把数组中的值赋给一些变量 
//	$a = array('aaa','bbb','ccc','ddd');
////	print_r($a);//Array ( [0] => aaa [1] => bbb [2] => ccc [3] => ddd ) 
//	list($var1,$var2,$var3,$var4) = $a;
//	echo $var4;

//	$usernames = array(0=>'何开','血'=>'赵血儿','学'=>'墨学之');
//	//list 只能认识 key 为数字的
//	//自定义的字符串 key 是无法使用 list 来识别的
//	list($a,$b,$c) = $usernames;
//	echo $a;//何开

	$usernames = array('世'=>'何开','血'=>'赵血儿','学'=>'墨学之');
	//相当于 $a =  Array ( [1] => 何开 [value] => 何开 [0] => 世 [key] => 世 ) 
	list($name,$username) = each($usernames);
	echo $username;
?>

 

Demo11.php

<?php
	$usernames = array('世'=>'何开','血'=>'赵血儿','学'=>'墨学之');
	$a =each($usernames);
	echo $a[key];
	$a =each($usernames);
	echo $a[key];
	//第三次,我想取数组的第一条数组
	//只要将数组的指针调整到第一个位置即可
	//reset -- 将数组的内部指针指向第一个单元
	reset($usernames);
	$a = each($usernames);
	echo $a[key];
	//世血世	
?>

 

Demo12.php

<?php
//	$usernames = array('世'=>'何开','境'=>'何开','血'=>'赵血儿','学'=>'墨学之');
//	print_r($usernames);
//	echo '<br/>';
//	//array_unique -- 移除数组中重复的值
//	//创建了一个新数组,而新数组呢,已经移除掉了,旧的数组原封不动
//	$a = array_unique($usernames);
//	print_r($a);
	
	$numbers = array(1,24,2,1,3,4,2,6,4,2,4,56,2,4,5);
	print_r($numbers);
	$newNumbers = array_unique($numbers);
	print_r($newNumbers);
?>

 

Demo13.php

<?php
	$usernames = array('世'=>'何开','境'=>'何开','血'=>'赵血儿','学'=>'墨学之');
	print_r($usernames);
	echo '<br/>';
	//array_flip -- 交换数组中的键和值
	$newUsernames = array_flip($usernames);
	print_r($newUsernames);
	/**
	 * Array ( [世] => 何开 [境] => 何开 [血] => 赵血儿 [学] => 墨学之 )
	 * Array ( [何开] => 境 [赵血儿] => 血 [墨学之] => 学 ) 
	 * */
?>

 

Demo14.php

<?php
	//创建一个单一的数组
	$products = array(
		array('苹果','6','28.8'),
		array('猪肉','2','18.8'),
		array('饼干','4','48.8')
	);
	//print_r($products);
	//将 $products 第一条元素取出来
	//print_r($products[2]);
	
	//数组里的数组
	echo "|".$products[0][0]."|".$products[0][1]."|".$products[0][2]."|<br />";
	echo "|".$products[1][0]."|".$products[1][1]."|".$products[1][2]."|<br />";
	echo "|".$products[2][0]."|".$products[2][1]."|".$products[2][2]."|<br />";
?>

 

Demo15.php

<?php
	//创建一个单一的数组
	$products = array(
		array('苹果','6','28.8'),
		array('猪肉','2','18.8'),
		array('饼干','4','48.8')
	);
	//首先要求出外面数组的长度
	//echo count($products);	
	for($i=0; $i<count($products);$i++){
		for($j=0;$j<count($products[$i]);$j++){
			echo '|'.$products[$i][$j];
		}
		echo "|<br/>";
	}
	/*
	 * |苹果|6|28.8|
	 * |猪肉|2|18.8|
	 * |饼干|4|48.8|
	 * **/
?>

 

Demo16.php

<?php
	//创建一个单一的数组
	$products = array(
		array('产品'=>'苹果','数量'=>'6','价格'=>'28.8'),
		array('产品'=>'猪肉','数量'=>'3','价格'=>'25.8'),
		array('产品'=>'饼干','数量'=>'2','价格'=>'26.8')
	);
	//print_r($products)	;
//	for($i=0;$i<count($products);$i++){
//		foreach ($products[$i] as $key => $value){
//			echo $key.'--'.$value.'|';
//		}
//		echo '<br/>';
//	}
	for($i=0;$i<count($products);$i++){
		while (!!list($key,$value)=each($products[$i])){
			echo $key.'--'.$value.'|';
		}
		echo '<br/>';
	}
	/**
	 * 产品--苹果|数量--6|价格--28.8|
	 * 产品--猪肉|数量--3|价格--25.8|
	 * 产品--饼干|数量--2|价格--26.8|
	 * */
?>

 

Demo17.php

<?php
//	//sort -- 对数组排序
//	$fruit = array('banner','orange','apple');
//	//没有排序前,一般是按照 key 的顺序进行显示
//	//print_r($fruit);
//	//排序之后
//	sort($fruit);
//	print_r($fruit);	

	$numbers = array(45,44,27,574,241,7,45,1,5,2,4,5);
	print_r($numbers);
	rsort($numbers);
	echo '<br/>';
	print_r($numbers);

	//按照数字的话,要看整体的数字的大小,按照字符串的话,只看第一位大小
//	$numbers = array(2,12,3);
//	sort($numbers,SORT_NUMERIC);
//	print_r($numbers);Array ( [0] => 2 [1] => 3 [2] => 12 ) 

//	$numbers = array(2,12,3);
//	sort($numbers,SORT_STRING);
//	print_r($numbers);//Array ( [0] => 12 [1] => 2 [2] => 3 ) 
?>

 

Demo18.php

<?php
//asort -- 对数组进行排序并保持索引关系
	$fruit = array('banner','orange','apple');
//	sort($fruit);
//	print_r($fruit);
	//Array ( [0] => apple [1] => banner [2] => orange ) 
	asort($fruit);
	print_r($fruit);	
	//Array ( [2] => apple [0] => banner [1] => orange ) 	
?>

 

Demo19.php

<?php
	$fruit = array('b'=>'banner','o'=>'orange','a'=>'apple');
	//ksort -- 对数组按照键名排序
	ksort($fruit)	;
	print_r($fruit);
	//Array ( [a] => apple [b] => banner [o] => orange ) 
?>

 

Demo20.php

<?php
	//echo '<img src="images/mm1.jpg" />';
	//创建一个数组
	$pic = array('mm1.jpg','mm2.jpg','mm3.jpg','mm4.jpg','mm5.jpg');
	//数组进行随机打乱
	//shuffle($pic);
	//多数组进行反向排序,array 打头的函数,一般会创建一个新数组
	$a = array_reverse($pic);
	for($i=0;$i<3;$i++){
		echo '<img src="images/'.$a[$i].'" style="margin:10px;" />';
		echo "\n";
	}
?>

 

Demo21.php

<?php
	$userName = array('张三');
	print_r($userName);
	//这个函数的返回值将得到 ,目前数组的元素个数
	//array_unshift --  在数组开头插入一个或多个单元 
	//在开头插入数据
	array_unshift($userName,'李四')	;
	//在结尾插入数据
	array_push($userName,'吴者然');
	//删除开头的元素
	array_shift($userName);
	//删除结尾的元素
	array_pop($userName);
	print_r($userName);
?>

 

Demo22.php

<?php
	$fruit = array('banner','orange','apple');
	//这个函数用来获取一个数组中的键(key)
	//第二个参数表明随即获取几个
//	$a = array_rand($fruit,1);
//	echo $fruit[$a];
	$a = array_rand($fruit,2);
	echo $fruit[$a[0]].' '.$fruit[$a[1]];
?>

 

Demo23.php

<?php
	$username = array('世'=>'何开','血'=>'赵血儿','学'=>'墨学之');
	//默认情况下,指针在第一条数据
	//获取指针的当前元素,current 并没有将指针移到下一步
//	echo current($username);	
//	echo current($username);	
//	echo current($username);	
	
//	echo next($username);
//	echo current($username);
//	echo next($username);
//	echo current($username);
//	//reset -- 将数组的内部指针指向第一个单元
//	echo reset($username);
//	echo sizeof($username);//count
	
	$numbers = array(1,4,5,656,7,5,7,4,7,4,5,7);
	//array_count_values -- 统计数组中所有的值出现的次数
	print_r(array_count_values($numbers));
?>

 

Demo24.php

<?php
	$a=$b=$c='';
	$fruits = array('a'=>'apple','b'=>'banner','c'=>'orange');	
	//通过标量函数将字符串键(key)设置成变量,然后将值赋给了这个变量
	extract($fruits);
	echo $a;
	echo $c;
	echo $b;
	//appleorangebanner
?>

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics