您现在的位置是:首页 >技术杂谈 >网络安全之PHP光速入门(详解基本数据类型,基本结构)熟悉C++与Python的同学更佳网站首页技术杂谈
网络安全之PHP光速入门(详解基本数据类型,基本结构)熟悉C++与Python的同学更佳
Web安全-PHP入门
PHP即超文本预处理器,是一种开源的脚本语言,用于在服务端运行,它混合了C,Java,Perl以及PHP自创的语法,主要用于Web服务
基本书写方式
通常php代码包含在下述结构中间:
<?php
?>
并且每条语句都应该以;
结束(只有一句代码时和最后一句结尾时可以不用加分号,两句之间不能用逗号分割而形成一句),和python一样,php是弱类型,解释型语言,声明变量时不需要声明其类型,同时它以支持使用单引号和双引号作为字符串的标志
进行注释
<?php
// 这是单行注释
# 这也是单行注释
/* 这是区块注释 */
?>
php的注释方式就上述三种://
,#
,/* */
输出数据
php使用echo作为输出的关键字(换行一样是
),我们走一波国际惯例:
<?php
echo "hello_world"; //
?>
PHP的数据类型
php有以下数据类型:
字符串,整型,浮点型,布尔型,数组,对象,空值,资源类型
- 注意php的布尔型是
true
与false
- 资源类型是外部资源的一个引用,用于使用外部资源
PHP变量
同其他语言一样php支持变量如代数一样计算,但同样也有以下几点规则:
- 变量以符号开始,后面紧跟变量名,定义与使用变量时都需要加上
- 变量必须以字母或者下划线开始
- 变量名只能包含字母数字字符以及下划线
- 变量名不能够包含空格,并且变量名区分大小写
PHP变量的作用域
php有四种作用域:local,global,static,parameter
- global作用域:即全局变量,在该文件中的所有函数都可以使用它,是由声明位置来决定的(在函数中访问全局变量需要global关键字),例如:
<?php
$a // 声明在所有语句前面
...
function test(){
global $a; // 使用global关键字
}
?>
- local作用域:即局部变量,通常只在某结构或某函数中生效,它是由声明位置来决定的
<?php
function test(){ // function 为函数关键字 后面将会提到
$a // 在函数中的变量a 标准的局部变量
}
?>
- static作用域:静态成员通常用于在某函数结束后,想要保存函数中某一变量直到程序结束时使用,需要使用关键字
static
<?php
function test(){ // function 为函数关键字 后面将会提到
static $a = 1; // 声明一个静态变量a 使它永远保持最新一次处理的值,直到该程序结束
// 与C++是一致的
}
?>
- parameter作用域:参数是放在函数的参数
()
内的,只能被该函数使用
<?php
function test($a){ // function 为函数关键字 后面将会提到
}
?>
PHP运算符
php同其他语言一样支持加,减,乘,除,与取模操作,需要注意的是php与python一致,在无法完全除尽时,输出的是实型数据,并且php还保留了C++的自增自减运算,下面介绍两种特殊运算-
(取反操作)与并置操作:
-
取反操作
我们直接以实例进行演示
<?php
$x=3;
echo -$x;
?>
我们运行此代码,输出-3
,这就是取反操作的基本用法,但是取反操作不允许操作字符串
并置操作
并置操作用.
来操作字符串,将两字符串连接到一起:
<?php
$x = "Hello ";
$y = "World";
echo $x.$y;
?>
运行此代码将输出Hello World
即并置操作将不会忽略空格
PHP对字符串的操作
- php允许以下标来访问字符串,并且下标也是0开始的,如下述代码将会输出
W
<?php
$a = "Hello World";
echo $a[6];
?>
- 字符串的连接就是上述的并置操作,不能使用
+
等算术运算符操作字符串,但是复制字符串时可以使用=
<?php
$a = "Hello World";
$b = $a;
echo "$b"
?>
- 获取php字符串的长度,通常使用
strlen()
函数(返回的是字符串的字节数,php中一个字符一字节)
<?php
$a = "Hello World";
$b = strlen($a);
echo $b;
?>
- 字符串匹配函数
strpos()
,返回第一个匹配字符的位置,未匹配则返回FALSE
<?php
$a = "Hello World-Hello World-Hello World-Hello World";
$b = strpos($a,"World");
echo $b;
?>
运行此代码后将输出值6
即匹配字符串的第一个字符的下标
php的分支结构,循环结构,数组几乎和C++是一致的,没有多少特殊的区别
PHP分支结构
php的分支结构与循环结构都是和C++类似的,条件处于
()
之内,语句主题处于{}
内,并且单条语句也可以省略{}
- if-else结构
if结构
<?php
$a = 3;
if($a<6){
echo $a;
}
?>
if-else结构
<?php
$a = 7;
if($a<6)
echo "true";
else
echo "false"
?>
else
与距离最近的if
成对出现,表示和条件不同的程序进行路线
if-elseif-else结构
<?php
$a = 7;
if($a<6)
echo $a," test_one ";
elseif(5<$a and $a<10)
echo $a," test_two ";
else
echo "不满足条件"
?>
if-elseif-else
结构即在if
与else
之间再嵌套一个if判断,表示若干条件之一成立,和C++类似最后的else
是可以省略的
- switch结构
<?php
$a = 10;
switch($a){
case 5:
echo "test_one";
break;
case 6:
echo "test_two";
break;
case 7:
echo "test_three";
break;
default:
echo "false";
}
?>
使用switch
结构时,在switch
条件下将会只进行一次计算,而使用if-elseif-else
结构将会进行多次运算
,所以在满足要求的条件下,使用switch
可以提高效率,但是需要注意这一特性带来的后果是,如果前面的case
与条件相等,后面的case
语句将会全部执行,必须加上break
才能避免这一情况的发生(这与C++是一致的),如果所有条件都比对后不成立,我们可以用default
进行进一步的操作
PHP循环结构
- while结构
<?php
$a=1;
while($a<5){
$x = 10;
echo $a," ";
$a++;
}
echo $x; // 可以使用x
?>
和C++一样,PHP的while循环一样是建立在括号内表达式为真时的情况下,但是在循环结构中声明的变量仍然是在后面可以使用的
- for结构
<?php
for($i=0;$i<5;$i++)
echo $i," ";
?>
和C++的循环结构是一致的,但是在循环结构中声明的变量仍然是在后面可以使用的:
<?php
$x=0;
for($i=0;$i<5;$i++){
$x+=$i;
echo $i," ";
}
echo $x;
?>
- 并且在这两种结构中
break
,continue
仍然是可以使用的,例如:
<?php
$x=0;
for($i=0;$i<5;$i++){
if($i==3){
continue;
}
echo $i," ";
}
?>
<?php
$x=0;
for($i=0;$i<5;$i++){
if($i==3){
break;
}
echo $i," ";
}
?>
PHP数组
php数组同样可以使用下标访问,并且下标由0开始,使用关键字array
加上()
进行声明,同时它和python的列表类似并不限制元素的数据类型,不过PHP中数组有三种类型:
数值数组
<?php
$a = array("one","two",3);
for($i=0;$i<count($a);$i++){
echo $a[$i]," ";
}
?>
在示例代码中我们发现,它不限制数据类型,我们能通过循环结构,使用下标访问,并且获取长度的函数是count()
关联数组
在php中可以创建出带有键的数组,每个元素一个键,它有两种创建方式:
<?php
$a=array("one"=>"100","two"=>"200","three"=>"300"); // 第一种
$b["one"]=100; // 第二种
$b["two"]=200;
$b["three"]=300;
echo $b['one'];
?>
使用关联数组
<?php
$a=array("one"=>"100","two"=>"200","three"=>"300");
echo $a["two"];
?>
我们通常使用$[关联数组名][对应键名]
来访问对应的值
遍历关联数组
<?php
$a=array("one"=>"100","two"=>"200","three"=>"300");
foreach($a as $k=>$v)
echo $k ."-". $v." ";
?>
我们使用foreach
进行遍历关联数组,需要注意此结构
foreach($[关联数组名] as $[任意变量名-键]=>$[任意变量名-值])
向关联数组中添加元素
<?php
$a=array("one"=>"100","two"=>"200","three"=>"300");
$a["four"] = "400";
foreach($a as $k=>$v)
echo $k ."-". $v." ";
?>
注意:熟悉Python的同学可能发现了,这和字典是非常类似的
高维数组
由于数组类型并不限制元素类型,那我们就可以套娃了
<?php
$a=array(
array(1,2,3),
array(4,5,6)
);
echo $a[0][2];
?>
然后你会发现这不就和Python的嵌套列表差不多吗,和C++的高维数组长的像远亲一样
<?php
$a=array(
"蔡徐坤"=>array("唱跳","RAP篮球","鸡你太美"),
"IKUN"=>array("铁粉","黑的","喜欢荔枝")
);
foreach ($a as $k=>$v){
echo "我是".$k.",喜欢";
for($i=0;$i<count($v);$i++){
echo $v[$i]." ";
}
echo "
";
}
?>
然后关联数组与普通数组嵌套,Python字典?这我熟啊
编程语言是融汇贯通的。。。。
数组排序
sort()
-:对数值数组进行升序排列rsort()
: 对数值数组进行降序排列asort()
:根据关联数组的值,对数组进行升序排列ksort()
: 根据关联数组的键,对数组进行升序排列arsort()
:根据关联数组的值,对数组进行降序排列krsort()
:根据关联数组的键,对数组进行降序排列
使用上述函数时,只需要[函数名]([$数组名])
即可,和Python一样,php也是支持按字符顺序排列的,这里不做过多赘述
PHP函数操作
php和JavaScript一样,使用function作为函数的关键字来声明一个函数,并且支持像Python那样直接在下方代码主体访问
函数使用与定义
<?php
function fun(){
$a = "Hello World";
echo $a;
}
fun();
// echo "
".$a;
?>
定义一个函数并调用它如上所示,并且在后续代码中是无法使用函数中定义的变量的,和其他语言一样,php函数也是有实参和形参的,主程序中传入的参数叫做实参,函数中定义的叫做形参,下面我们以嵌套调用来表示:
函数的嵌套调用
<?php
function fun($x,$y){ // 这里是形参
echo add($x,$y);
}
function add($x,$y){
return (++$x)+(++$y); // 使用return进行返回值传递
}
$a = 11;
$b = 22;
fun($a,$b); // 这里是实参
?>
如上述代码中所示,php同其他解释性语言一样,不用关注函数定义顺序,即可自动调用运行
函数的递归操作
<?php
function fun($x){
if($x<=100){
return fun($x+1)+$x;
}
else
return 0;
}
echo fun(1);
?>
需要注意的是php5递归时最多使用128m内存,而php7则增加到了256m