Web安全学习_PHP学习_语法、变量、常量、函数、数组

一、语法

  1. 定界符php代码需要包含在<?php ?>中
<?php
	代码段	
?>
  1. 注释方法
<?php
	//单行注释
	#单行注释
	/*
	多行
	注释
	*/
?>

二、 变量

  1. 定义:$变量名
<?php
	$a=10;//定义变量a并赋值为10

/*-----------变量的说明---------------------------
※php为弱类型语言,根据所赋值而确定变量的类型;
※变量名由字母、数字和下划线(_)组成,开头不能为数字;
※变量名区分大小写,如$A和$a为两个不同的变量
------------------------------------------------*/
?>
  1. 字符串变量
    字符串变量并置运算符(.)
<?php
	$str1="hello";
	$str2="world";
	echo $str1." "."$str2";//通过并置符将hello、空格、world连接在一起
?>

关于双引号与单引号
在这里插入图片描述

  • strpos() f函数查找字符串在另一字符串中第一次出现的位置(区分大小写)
    在这里插入图片描述
    在这里插入图片描述
  • substr() 函数返回字符串的一部分
    在这里插入图片描述
    在这里插入图片描述
  • str_split() 函数把字符串分割到数组中
    在这里插入图片描述
    在这里插入图片描述
  • explode() 函数使用一个字符串分割另一个字符串,并返回由字符串组成的数组List item
    在这里插入图片描述
    字符串操作函数手册
    字符串操作函数手册
  1. 局部变量与全局变量
    函数定义的变量为全局变量,全局变量可以在除函数内部以外的任何地方调用,在函数内部调用需要加上global关键字
<?php
	$a=10;//定义全局变量$a
	function myTest(){
		$b=20;//定义局部变量$b
		echo $a;
		echo $b;
	}
	myTest();//调用此函数时将会报错,函数内部无法调用全局变量$a
?>
//-------------若在函数中调用则可采取下列方法---------------
<?php
	$a=10;
	function myTest(){
		global $a;//调用全局变量加关键字global
		$b=20;
		echo $a;
		echo $b;
	}
	myTest();//此时全局变量$a和局部变量$b都可以输出
?>

全局变量存储在一个数组$GLOBALS[index]中,index为全局变量的变量名,函数内和函数外均可通过此数组的方法调用全局变量

<?php
	$a=10;
	$b=20;
	function add(){
		$GLOBALS['a']+=$GLOBALS['b'];
	}
	add();
	echo $a;//此时$a=30
?>

static关键字定义了静态变量,函数内定义的局部变量当函数调用结束后会自动删除,若想保留函数内定义的局部变量的值则需要在函数内定义静态变量

<?php
	function add1(){
		static $a=10;
		$b=20;
		$a++;
		$b++;
		echo $a;
		echo $b;
	}
	add1();//此时输出结果$a=11,$b=21
	add1();//$a=12,$b=21
	add1();//$a=13,$b=21
?>

三、常量

定义:

  1. 调用define(a,b,c)函数。a:常量名(常量名需要用双引号括起来);b:常量值;c:是否对常量名大小写敏感(设置为true不区分大小写),此参数可省略,缺省表示区分大小写
  2. const 常量名=常量值;

常量为全局作用域一旦定义则不能在任何地方改变,可以在任何地方使用

<?php
	define("Name","hello PHP",true);//定义不区分大小写的常量
	function test(){
		echo name;//函数内调用常量
	}
	test(); //输出"hello PHP"
?>

一些PHP已经定义好的超级全局常量
$GLOBALS
$_SERVER
$_REQUEST
$_POST
$_GET
$_FILES
$_ENV
$_COOKIE
$_SESSION

$_SERVER:包含了头信息、路径、以及脚本位置等信息的数组。由web服务器创建。具体可参见菜鸟教程

$_REQUEST:用于接收表单提交的数据

<html>
<head>
	<meta charset="utf-8">
</head>
<body>
	<form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">
	用户名:<input type="text" name="username">
	<input type="submit" name="">
	<?php
		$name=$_REQUEST['username'];//定义$name变量来接收用户名,方框内容为input标签的name属性
		echo $name;//输出用户名的内容
	?>
</body>
</html>

四、 输出的方法

echo和print区别:

  • echo可以输出多个字符串,print只能输出一个字符串
  • echo没有返回值,print有返回值为1,echo输出速度快于print
<?php
	echo "hello","world","!";
	print "hello","world";//此行语法错误,print只能输出一个字符串
?>

五、PHP EOF定义字符串

功能:定义一个字符串,开始结束标记一致。

<?php
	$a="hello";
	$str=<<<EOF
	"PHP"	
	"EOF"
	$a
EOF;
//结尾标记须在行首写,以分号结束。
echo $str;
?>
//开始标记与结束标记可以替换成其他标记
//开始标记有三种,不加引号、加双引号、加单引号。不加引号和加双引号作用相同,可以解析字符串中的变量。加单引号不能解析字符串中的变量

六、运算符

运算符

运算符 名称及描述
x and y 与(x和y全真即真)
x or y 或(x、y一真为真)
x xor y 异或(x和y相异则为真)
x&&y 与(x和y全真即真)
x || y 或(x、y一真为真)
!x
== 等于 (等号左右只要值相同即为真)
=== 绝对等于 (等号左右值和类型均相同才为真)
!= 不等于(值不同即为真,类型不同无关)
!=== 绝对不等于(值或类型有一个不相同即为真)

and、or与&&、||的区别:
and、or的优先级低于赋值运算符(=),&&、||的优先级大于赋值运算符(=)

<?php
	$a=10;
	$b=10.0;
	$c=20;
	$jud1=$a<0 or $b>0;//由于优先级小于(=)所以$jud1的值为假
	$jud2=$a<0 || $b>0;//由于优先级大于(=)所以$jud1的值为真
	$jud3=$a!=$b;//$jud3的值为假
	$jud4=$a!==$b;//$jud4的值为真
?>

三元运算符
格式:a?b:c
说明:a、b、c为表达式,若表达式a为真则返回表达式b的值,a为假返回表达式c的值。

PHP5.3后可支持省略表达式b的内容,a?:c,表达式a为真返回a的值,a为假返回c的值

<?php
	$a=10;
	$b=0;
	$x=$a>0?:$b;//$x的值为true
	$y=$a>0?$a:$b;//$y的值为10
?>

七、数组

数组分为:数值数组、关联数组、多维数组

数组的定义:通过array()函数或单独定义

<?php
//----------整体定义(自动分配id)----------
	$arr1=array("值1","值2");
//----------单独定义(手动分配id)----------
	$arr2[0]="值1";
	$arr2[1]="值2";
//----------求数组的长度------------------
	$Arr1Num=count($arr1);//求出数组$arr1的长度为2
?>
  1. 数值数组
    数组内容可以为数字或字符串,id从0开始
  2. 关联数组
    关联数组的定义及遍历
<?php
//----------第一种定义方法------------
	$People=array("Tony"=>"60","Alice"=>"90","Bob"=>"70");
//----------第二种定义方法------------
	$People2['James']="80";
	$People2['Jorden']="78";
//----------关联数组的遍历(foreach循环)------------
	foreach($People as $x=>$x_value){
		echo "$x=".$x."value=".$x_value."<br>";
	}
	//$x为下标,$x_value为值,名字可以改变
?>

foreach循环:每循环一次,当前数组的值就会被赋给$value

格式:foreach($arr as $value)
	{
	代码块;
	}
<?php
//定义一个数组并输出
	$arr=array("one","two","three");
	foreach($arr as $value){
		echo $value;
	}
?>

操作数组的函数手册
操作数组的函数手册

八、函数

  1. 内建函数:菜鸟教程
  2. 自定义函数:
    格式:
<?php
	function 函数名(参数列表
 - [ ] List item

){
		函数体//函数名命名规则同变量
	}
?>

函数的两种调用方法:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

九、include、include_once、require、required_once

在这里插入图片描述
在这里插入图片描述
包含几次就会执行几次代码,当lib.php中定义了函数,则会报错(函数重定义)此时通过include_once进行解决,不管include_once代码写多少次,只包含一次

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章