暑假第三周练习(一)PHP学习(六)--数组基础

学习ing!
目录:
0×01 数组的分类
0×02 数组的创建
0×03 遍历数组
0×04 预定义超全局数组

0×01 数组的分类

分为两种数组索引数组和关联数组

数组的名称为整形时是索引数组,为字符串类型时是关联数组。

0×02 数组的创建

php定义数组时,不需要提前声明,不需要定义大小,直接创建,使用array()创建。
数组输出需要使用print_r()函数,或者var_dump()函数。

方法一:直接为数组元素赋值即可创建。

$stduent[0]=12
$student[1]='hello'
$student[2]='false'

当然索引值可以是整数也可以是字符串,也可以不写,不写索引值默认是 索引数组,从0开始

方法二:

变量名称=array(数据,数据,。。。);
不写索引值默认是 索引数组,从0开始,自动分配。

$student=array(10,"你好",66.66,true);

方法三:
变量名称=array(
索引值=>数据,

);

<?php

//$student=array(索引值=>具体的值,.......);
$student=array(10,'孙胜利',true,60.5);//一维数组
var_dump($student);
$student1=array(
		0=>10,
		1=>'你好',
		2=>true,
		3=>60.5
);
var_dump($student1);
$student2=array(
		'num'=>11,
		'name'=>'你好',
		'sex'=>true,
		'grade'=>80.5,
		10=>'dqwdwqdwq'
);
var_dump($student2);
?>

需要调用数组里的某一个值的方法:echo 数组变量名称[索引值]

数据里面还可放数组类型的数据,同一个数组中存储任何类型的数据(类似于C语言的二维数组)

多维数组:
访问数值的方法
变量名称[索引值][索引值]…

<?php 
//二维数组,多维数组
$students=array(
	0=>array(1,'你',true,60.5),
	1=>array(2,'好',true,80.5),
	2=>array(3,'啊',false,85.5)
);
/*
$students=array(
		array(1,'你',true,60.5),
		array(2,'好',true,80.5),
		array(3,'啊',false,85.5)
);
*/

var_dump($students);
echo $students[0][1];
?>

0×03 遍历数组

类似于其他语言的循环。

注意:count(数组[,1])返回数组里面数据的个数,还可以获取多维数组的个数 ,当然一般我们只传一个数组进去就可以了

①用for语句来遍历数组


$arr=array(
	'a','b','c','d','e','f'
);
for($i=0;$i<count($arr);$i++){
	echo $arr[$i];
}

数组元素数量为6 ,输出结果是abcdef。

$arr1=array(
		array(1,2,3),
		array(4,5,6)
);
echo count($arr1);
*/

这样只会输出第一层的数组,数量为2。

如果我们要输出这个数组的全部的个数,应该怎样?

$arr1=array(
		array(1,2,3),
		array(4,5,6)
);
echo count($arr1,1);//2+6=8

这样就可以输出第一层有2个元素,第二层有6个元素,所以总共有8种元素。

for循环的缺点:只适合索引数组,不适合关联数组,但是关联数组在php语言中应用非常广泛,所以for循环用的比较少

②foreach语句遍历数据

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

<?php 
$arr1=array(
		'name'=>'你好',
		'num'=>10
);
foreach($arr1 as $value){
	echo $value.'<br />';
}
?>

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

<?php 

$arr1=array(
		'name'=>'孙胜利',
		'num'=>10
);

foreach($arr1 as $key=>$value){
	echo $key.'=>'.$value.'<br />';
}
?>

如何遍历多维数组?
递归怎么样? foreach里面再套一个foreach!

<?php
$arr=array(
		'a',
		'b',
		'c',
		'd',
		array(
			1,2,3,4,5
		)
);
foreach ($arr as $val){
	var_dump($val);
}
?>

这个就可以。
但是,我们应该怎样访问array( 1,2,3,4,5 ) 这个数组???

<?php
$arr=array(
		'a',
		'b',
		'c',
		'd',
		array(
			1,2,3,4,5
		)
);
foreach ($arr as $val1){
	foreach ($val1 as $val2){
		echo $val2.'<br />';
		//var_dump($val2);
	}
}
	
?>

这样应该就行了。

例子:

<?php
/*
 * 总结的案例
 * */
$students=array(
	array('你',1,true,60.5),
	array('我',2,true,80.5),
	array('他',3,false,85.5)
);
echo '<table border=1>';
foreach ($students as $val){
	if($val[2]===true){
		$val[2]='男';
	}else{
		$val[2]='女';
	}
	echo "<tr><td>{$val[0]}</td><td>{$val[1]}</td><td>{$val[2]}</td><td>{$val[3]}</td></tr>";
}
echo '</table>';
?>

0×04 预定义超全局数组

已经定义好了(存在)的变量(存放的数据的类型是数组)。
超全局:超级全局变量,作用域(有效区域)!就类似于c语言里头文件包含的函数可以让我们在全局任意位置使用!

超全局变量一是有全局变量的特性,而是无须声明直接使用。(系统创建及维护)

预定义超全局变量共有九个:

$_GET
$_POST
$_REQUEST
$_SERVER
$_ENV
$_FILES
$_COOKIE
$_SESSION
$GLOBALS


get方式
比如
?参数名=参数值&参数名=参数值…
http://127.0.0.1/demo5_3/index.php?参数名=参数值
在服务器端(请求的php文件这边)可以通过$_GET来获取到
$_GET索引值为参数名,索引值对应的数据就是参数值
但是GET的内容会出现在URL框里,所以不是很安全


post方式
比如
表单 post发送过来的!
可以通过$_POST来获取到!

POST方式和GET方式的区别:

POST方式安全性好
数据传输大小(POST方式大)
保存到收藏夹(GET方式)


$_REQUEST
作用:
$_REQUEST 主要包含包含 $ _GET 、$_POST、 $_COOKIE数组的信息。
注意不要经常使用 $ _REQUEST(因为将多个信息混合)。
通过$_SERVER[‘REQUEST_METHOD’]区分GET和POST

$ _SERVER主要包含了http请求行和消息头的信息,同时还有服务器的一些信息(DOCUMENT_ROOT,SCRIPT_FILENAME…)。

获取服务器端的环境变量,通过修改php.ini的variables_order="EGPCS"启动。

包含了全部变量的全局组合数组。
当定义一个全局变量,也会被$GLOBALS管理。

在这里插入图片描述
11111!!!!!

猜你喜欢

转载自blog.csdn.net/qq_45869039/article/details/107400967