php数组学习

一、数组分类
1.索引数组
索引值为整数的数组
2.关联数组
索引值为字符串的数组,使用字符串作为索引,这使得编程更加人性化!
这在其他编程语言中非常少见,但是在PHP中会被大量的使用在开发过程中,
使用起来极其方便!
在这里插入图片描述二、数组创建
方法一、
变量名称[索引值]=数据;
变量名称[]=数据;//不写索引值默认是 索引数组,从0开始

  //  1.索引数组
	//创建数组方法一
//$studnet[索引值]=具体的值
$student[0]=10;
$student[1]='声社';
$student[2]=true;
$student[3]=60.5;
$student[10]=30;

//需要使用print_r()函数来输出数组具体内容
//print_r($student);
var_dump($student);

	/*创建数组第二种方法*/
//$studnet[]=具体的值
//如果省略索引值不写那么默认索引值就是整数,并且从0开始,一次向上!
$student[]=10;
$student[]='声社';
$student[]=true;
$student[]=60.5;
?>
//上面都是用索引数组下面是关联数组
$student1['num']=10;
$student1['name']='声社';
$student1['sex']=true;
$student1['grade']=60.5;
var_dump($student1);
//使用数组里面具体数据的方法 
//数组变量名称[索引值];
echo $student[1];
//这样写更人性化           他的索引值是字符串	

方法二、
(1)变量名称=array(
索引值=>数据,

);
数据里面还可放数组类型的数据,同一个数组中存储任何类型的数据

(2) s t u d e n t = a r r a y ( 10 , ′ 孙 胜 利 ′ , t r u e , 60.5 ) ; / / 一 维 数 组 v a r d u m p ( student=array(10,'孙胜利',true,60.5);//一维数组 var_dump( student=array(10,,true,60.5);//vardump(student);

//索引数组
/*创建数组第二种方法*/
//$student1=array(索引值=>具体的值,......)多个值用,隔开
$student1=array(
0=>10,
1=>'孙胜利',
2=>true,
3=>60.5);
var_dump($student1);
//和上面的一样
//关联数组
$student2=array(
'num'=>10,
'name'=>'孙胜利',
'sex'=>true,
10=>'ddjajjad',//这样写也是可以的
'grade'=>60.5);
var_dump($student2);

2.1.二维数组 ,多维数组

	//二维数组 ,多维数组
$students=array(
0=>array(1,'生疏了',true,60.5),
1=>array(2,'生cc',true,80.5),
2=>array(3,'生ff',false,88.5),
);
//$students=array(
//array(1,'生疏了',true,60.5),
//array(2,'生cc',true,80.5),
//array(3,'生ff',false,88.5),
//);      //也可以这样写因为它里面默认是索引数组,不是单独的一个数据
var_dump($students);//1个数组里面又有数组
echo $students[0][1];//找'生疏了'

在这里插入图片描述
三、数组的遍历
遍历数组:每个都经历一遍的意思
1)for循环
用的比较少,因为有缺陷

	//索引数组
	/*使用for循环可以遍历数组*/
	/*//count(数组[,1])[]代表可选的 返回数组里面数据的个数,还可以获取多维数组的个数
    $aar1=array(
	array(1,2,3),
	array(4,5,6)
	);
	echo  count($arr1);//输出2
	echo count($arr1,1);//输出的8  2+6*/
		
	$arr=array(
	'a','b','c','d','e','f'
	);
	
	//echo count($arr);
	for($i=0;$i<count($arr);$i++){
		echo Si.'<br/>'
	}
	
	//for循环用的比较少,因为有缺陷
	
	//关联数组   不能用for循环了

2)foreach语句来实现遍历数组的目的
foreach(数组变量 as 变量1){
//每次循环执行的语句
变量1代表当前正在经历(访问)的数据
}
遍历的都是一维数组


	/*foreach(数组变量 as 变量1){  
	 //数组变量要变量的数组
		//大括号里面每次循环执行的语句
	//	变量1代表当前正在经历(访问)的数据
	}*/
	//foreach来遍历数组
	//这个比较常用,因为是专门为我们来遍历数组的
	
	/*$arr=array(
	'a','b','c','d','e','f'
	);
	foreach($arr as $value){
		echo $value.'<br/>';
	}*/
	
	$arr1=array(
	'name'=>'孙胜利',
	'num'=>10
	);
	//foreach($arr1 as $value){
	//	echo $value.'<br/>';
	//}

foreach(数组变量 as 变量1=>变量2){
//每次循环执行的语句
变量1代表当前正在经历(访问)的数据的索引值
变量2代表当前正在经历(访问)的数据
}

	/*拿到name  num这个数组变量*/
	foreach($arr1 as $key=>$value){
		echo $key.'=>'.$value.'<br/>';
		echo count($arr1);   //数组长度
	}//打印出  name=>孙胜利       //num=>10

	/*foreach(数组变量 as 变量1=>变量2){
				//每次循环执行的语句
				变量1代表当前正在经历(访问)的数据的索引值
				变量1代表当前正在经历(访问)的数据
			}
	*/

遍历二维数组

//以后遇到这种情况再说        递归思想解决
$arr=array(
'a',
'b',
'c',
'd',
array(
1,2,3,4,5            //这个没输出
)
);
foreach($arr as $val){
	var_dump($val);
}

在这里插入图片描述

	//有规律可以直接嵌套遍历就可以了
$arr=array();
array('a','b','c','d'),
array('a','b','c','d','e','f'),
array('a','b','c','d'),
array('a','b','c','d'),
);
foreach($arr as $val1){
	foreach($val1  as $val2){
		echo $val2.'<br/>';
	}
}
<?php
	//案例
$arr=array(
array("商品名称","单价","产地","数量","总价"),
array("主板",379,"广东",3,1137),
array("显卡",799,"上海",2,1598),
array("硬盘",589,"北京",5,2945)
);
echo '<h1>商品订货单</h1>';
echo '<table border="1">';
foreach($arr as $val1){
	
echo "<tr><td>{$val1[0]}</td><td>{$val1[1]}</td><td>{$val1[2]}</td><td>{$val1[3]}</td><td>{$val1[4]}</td></tr>"	;
}

echo '</table>';
?>

四、预定义超全局数组变量
已经定义好了(存在)的变量(存放的数据的类型是数组)。
超全局:超级全局变量,作用域(有效区域)!
传递数据(提交数据)给服务器端主要两种方式
1.get方式
比如:
?参数名=参数值&参数名=参数值…
http://localhost/demo5_3/index.php?参数名=参数值
在服务器端(请求的php文件这边)可以通过$_GET来获取到
$_GET索引值为参数名,索引值对应的数据就是参数值
在这里插入图片描述

2.post方式
比如表单 post发送过来的!
可以通过$_POST来获取到!
在这里插入图片描述

<?php
var_dump($_GET);
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>预定义超全局数据变量</title>
</head>
<body>
<form method="get">
	姓名:<input type="text" name='username' /><br />
	性别:<input type="text" name='sex' /><br />
	<input type="text" name='dwqdwqdqw' />
	<input type="submit" value='提交' />
</form>
</body>
</html>

五、处理数组的相关函数
1)array_count_values
$array = array(1, “hello”, 1, “world”, “hello”);
a r r = a r r a y c o u n t v a l u e s ( arr=array_count_values( arr=arraycountvalues(array);//函数返回数组类型的数据
print_r($array);//原来的数组不会受到任何影响
在这里插入图片描述

2)array_key_exists
s e a r c h a r r a y = a r r a y ( ′ f i r s t ′ = &gt; 1 , ′ s e c o n d ′ = &gt; 4 ) ; v a r d u m p ( a r r a y k e y e x i s t s ( ′ s e c o n d ′ , search_array = array(&#x27;first&#x27; =&gt; 1, &#x27;second&#x27; =&gt; 4); var_dump(array_key_exists(&#x27;second&#x27;, searcharray=array(first=>1,second=>4);vardump(arraykeyexists(second,search_array));
在这里插入图片描述3)array_search
$array = array(0 => ‘blue’, 1 => ‘red’, 2 => ‘green’, 3 => ‘red’,4=>15);
var_dump(array_search(‘15’, $array,true)); //ture如果前面都满足在检查类型,可以不写true
在这里插入图片描述

4)count
a r r a y = a r r a y ( 0 = &gt; ′ b l u e ′ , 1 = &gt; ′ r e d ′ , 2 = &gt; ′ g r e e n ′ , 3 = &gt; ′ r e d ′ , 4 = &gt; 15 ) ; v a r d u m p ( c o u n t ( array = array(0 =&gt; &#x27;blue&#x27;, 1 =&gt; &#x27;red&#x27;, 2 =&gt; &#x27;green&#x27;, 3 =&gt; &#x27;red&#x27;,4=&gt;15); var_dump(count( array=array(0=>blue,1=>red,2=>green,3=>red,4=>15);vardump(count(array));

5)in_array
$os = array(“Mac”, “NT”, “Irix”, “Linux”);
var_dump(in_array(‘Mac’, $os));

在这里插入图片描述

6)list
a r r = a r r a y ( 60 , 80 , 100 ) ; l i s t ( arr=array(60,80,100); list( arr=array(60,80,100);list(sunshengli, x i a o h o n g , xiaohong, xiaohong,xiaoming)=array(60,80,100);
echo $sunshengli;
在这里插入图片描述

7)asort
s t u d e n t s = a r r a y ( ′ s u n s h e n g l i ′ = &gt; 60 , ′ l i l e i ′ = &gt; 80 , ′ h a n m e i m e i ′ = &gt; 100 , ′ z h a n g s a n ′ = &gt; 90 ) ; a s o r t ( students=array( &#x27;sunshengli&#x27;=&gt;60, &#x27;lilei&#x27;=&gt;80, &#x27;hanmeimei&#x27;=&gt;100, &#x27;zhangsan&#x27;=&gt;90 ); asort( students=array(sunshengli=>60,lilei=>80,hanmeimei=>100,zhangsan=>90);asort(students);
print_r($students);
直接对数组里面的数据进行排序,第二个参数
SORT_REGULAR - 正常比较单元(不改变类型)
SORT_NUMERIC - 单元被作为数字来比较
SORT_STRING - 单元被作为字符串来比较
SORT_LOCALE_STRING - 根据当前的区域(locale)设置来把单元当作字符串比较。
在这里插入图片描述

8)array_filter
	function odd($var)
	{
		return($var % 2 == 1);
	}

	function even($var)
	{
		return($var % 2 == 0);
	}

	$array1 = array("a"=>1, "b"=>2, "c"=>3, "d"=>4, "e"=>5);
	$array2 = array(6, 7, 8, 9, 10, 11, 12);

	echo "Odd :\n";
	print_r(array_filter($array1, "odd"));
	echo "Even:\n";
	print_r(array_filter($array2, "even"));

在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值