您现在的位置是:首页 >技术杂谈 >网络安全之PHP光速入门(详解基本数据类型,基本结构)熟悉C++与Python的同学更佳网站首页技术杂谈

网络安全之PHP光速入门(详解基本数据类型,基本结构)熟悉C++与Python的同学更佳

鸢驿 2024-06-14 17:20:22
简介网络安全之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的布尔型是truefalse
  • 资源类型是外部资源的一个引用,用于使用外部资源

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结构即在ifelse之间再嵌套一个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;
?>
  • 并且在这两种结构中breakcontinue仍然是可以使用的,例如:
<?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

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。