PHP基础

目录

PHP认识脚本程序

PHP标记语言

指令分隔符

注释

遇到空白的处理

变量

变量的声明

变量的释放

变量的命名

变量的赋值于初始化

可变变量 - $$

变量引用赋值

变量类型

bool - 布尔型

int - 整型

float - 浮点型,也称double

string - 字符串

单引号

双引号

定界符

其他数据类型

变量类型相互转换

常量

定义和使用

常量与变量的区别

预定义常量

运算符

算术运算符

字符串运算符

赋值运算符

比较运算符

逻辑运算符

其他运算符

运算符的优先级


PHP认识脚本程序

PHP标记语言

<?php //开始标记,
//<? //php的短标记,需要在php.ini 中进⾏配置。
phpinfo(); //显示php 的详细配置信息,其中包含系统与Apache 服务器信息。
 //结束标记
?>
  • 只要能够在⼀个⽹站中,看到 phpinfo() 的内容,说明php 环境'正常';如果是⼀个在线的⽹站能够看到该⻚⾯,说明存在敏感信息泄露 漏洞,这个漏洞需要体现在后⾯的渗透测试报告中;再 有,如果通过⽂件上传,能够看到该⻚⾯,说明存在⽂件上传 漏洞,并且能够"完美利⽤"
  • <?php ?> 这之间就表示进⼊PHP模式,在开始和结束标记之外的内容都会被PHP解析器忽略,之外的内容会被作为字符输出到浏览器中。
  • 可以直接嵌⼊到html代码中,并且可以嵌⼊到html代码中的任何地⽅,可以实现PHP 代码与 HTML 代码进⾏混编 HTML 代码对于PHP 来说,就是字符串。PHP 负责将字符输出到浏览器 中,浏览器负责根据字符中所包含的HTML 代码进⾏渲染。
  • 在⼀个html⽂档中可以嵌⼊任意多个PHP 标记!
  • ⽂件末尾的PHP代码段结束标记 ?> 可以不要,在⼀些情况下省略掉更好!
  • 建议,不要省略结束标记。

指令分隔符

分号,;  。

  • PHP用分号表示一句话的结束。
  • 结束标志?>就隐含一个分号,所以PHP代码最后一行可以不用加分号!
  • 建议,每条PHP语句都要使用分号结束。

注释

<?php
/*
这是⼀个多⾏注释,
可以有多⾏⽂字
*/
//这是单⾏注释
?>
<?php
/*
 This is index.php!
 --AJEST--
*/
// DNSec.com.cn
?>

遇到空白的处理

空白符包括:

  • 空格
  • tab制表符
  • 换行
这些在 PHP 中都是⽆关紧要的(注意都是英⽂输⼊法下输⼊的),可以将⼀个语句展开成任意⾏,或者紧缩在⼀⾏,空格与空⾏的合理运⽤可以增强代码的清晰性与可读性,如果运⽤不合理反⽽会对阅读产 ⽣负担!
 
不能是用空白符打断PHP的关键字(函数名,语句名,变量名,类名,方法名等等)。
 

变量

现实⽣活中在家⾥⽤柜⼦来存放⾐服、包、书籍或者其他的东⻄
 
变量包含四个部分内容:
 
  • 变量名
  • 内存空间(⼀般不需要关⼼,都是程序⾃动完成创建与销毁的。)
  • 变量值(变化)
  • 数据类型,变量值的类型(可以是抽象的)

变量是用于临时存储值得容器。

变量在任何编程语言中的都是核心地位。

另外,PHP脚本语言是一种弱类型语言,和其他语言不同的是变量(常量)的数据类型由程序的上下文决定(给⼀个变量赋予什么样的值,就是什么数据类型)。

变量的声明

PHP 的特性之⼀就是它 不要求在使⽤变量之前声明变量 ,当第⼀次给⼀个变量赋值时,才创建了这个变量,变量⽤于存储值⽐如数字、⽂本字符串或者数组。⼀旦设置了某个变量,就可以在脚本中重复地使 ⽤它。
 
PHP中变量必须使用一个美元符号$后面跟着变量名来表示,使用赋值操作符=给一个变量赋值。
 
<?php
echo $name;                     //notice,变量未定义,内存中没有该变量。
$name = "wxkun";                //变量的初始化赋值,会在内存创建该变量。
echo $name;                     //wxkun
?>

变量的释放

unset() 函数释放指定的变量。

<?php
echo $name;
$name = "wxkun";
echo $name;
echo "<hr />";
unset($name);                    //释放$name
echo $name;                      //Notice: Undefined variable: name
?>

变量的命名

  • 变量名是严格区分⼤⼩写的。以下变量是完全不同的。
<?php
$name = "wxkun";
echo $Name;
echo $NAME;
echo $nAme;
?>
  • 变量名由字⺟、数字、下划线组成,并且不能以数字开头,也不能包含其他字符(空⽩字符、特殊 字符、空⽩符等等)。
     
    <?php
    $name = "wxkun";
    $name1 = "WXKUN";
    $my_name = "雄霸天下";
    $_name = "保八挣七";
    echo $name;
    echo "<hr />";
    echo $name1;
    echo "<hr />";
    echo $my_name;
    echo "<hr />";
    echo $_name;
    echo "<hr />";
    ?>
    • 变量命名时,建议使⽤驼峰式命名法或者下划线命名法,做到变量名 " ⻅名知意 "
    <?php
    $firstName;
    $lastName;
    $first_name;
    $last_name;
    ?>
    • PHP 中有⼀些标示符是系统定义的,也称为关键字,是 PHP 语⾔的组成部分,因此不能使⽤它们中 的任何⼀个作为常量函数名或类名。但是和其他语⾔不同的是可以在 PHP 中作为变量名称使⽤,不过这样容易混淆,所以最好还是不要⽤ PHP 的关键字作为变量名称。
    <?php
    $echo;    //建议不要使用
    ?>

    变量的赋值于初始化

    • 在第⼀次使⽤变量时,就进⾏赋值,这个过程叫"初始化"。在后期使⽤变量的时候,可以随时修改变量 的值。
    • 直接⽤⼀个等于号 = ,就可以完成变量的赋值。
    <?php
    echo $name;                           //Notice: Undefined variable: name
    echo "<hr />";
    $name;
    echo $name;                           //Notice: Undefined variable: name
    echo "<hr />";
    $name = "wxkun";
    echo $name;                           //wxkun
    ?>

    可变变量 - $$

    • ⼀个变量的名字 可以动态的设置和使⽤。
    • $$ php 的特性,也是产⽣php 变量覆盖漏洞 的原因。
    <?php
    $name = "wxkun"
    $$name = "dnsec.com.cn"                   //wxkun
    echo $name;
    echo "<hr />";
    echo $$name;
    echo "<hr />";
    echo $wxkun;                              //dnsec.com.cn, 定义过$wxkun,并且进行了初始化。
    ?>

    变量引用赋值

    引用赋值可以简单的理解为给变量起了个别名

    <?php
    $a = 6;
    $$a = 100;         //$6
    echo $$a ;         //100
                       //$6, 这种写法是非法的
    
    echo "<hr />"
    $b = $a;
    $b += 1;
    echo $b;echo "|";echo $a;
    echo "<hr />";
    $c = &$a;           //变量的引用赋值
                        //相当于给变量起了一个别名
    $c +=1;
    echo $c;echo "|";echo $a; 
    ?>

    变量类型

    • 变量类型是指保存在该变量中的数据的数据类型,在计算机编程语⾔世界中每个数据都有它的类型。具有相同类型的数据才能被彼此相互操作。
    • 在强类型的语⾔中例如 C 语⾔,变量要先指定类型(变量的声明),然后才可以存储对应指定的数据,就好⽐现实⽣活中在制作⼀个柜⼦之前,就要决定好这个柜⼦是什么类型的柜⼦,是书柜那么以后就只 能⽤来存书,是⾐柜以后就只能⽤来存⾐服。
    • 但是 PHP 是⼀种弱类型的语⾔,和其他语⾔不同的是,变量或者常量的数据类型由程序的上下⽂决定,不需要事先声明类型。⼀个柜⼦,要是往⾥⾯存书籍那么他就是书柜;要是往⾥⾯存放⾐服,那么它就 是⾐柜,根本不需要事先说明这个是书柜还是⾐柜,⼀切根据实际需要使⽤即可!
    • 可以将数据的变量类型输出,使⽤的函数 var_dump()
    <?php
    $name = "wxkun";
    $age = 24;
    var_dump($name);      //string(5) "wxkun"
    var_dump($abs);		  //int(24)
    ?>

    bool - 布尔型

    • boolean
    • 这个是简单的类型,布尔型表达了true或false,即真或假。
    <?php
    $a = true;
    $b = false;
    var_dump($a);
    echo "<hr />";
    var_dump($b);
    ?>
    • 进⾏ if 判断的时候,会有类型转换(PHP 定义好了的),其他类型的之转换成布尔类型的值。以下值被认为是 false ,其他的值都是被认为是 true 。

      • bool(false)
      • int(0)
      • float(0)
      • string(0) "" 或者 string(1) "0"
      • array(0) { }
      • NULL
      <?php
      //$a = true; //True
      //$a = false; //Fasle
      //$a = 0;
      //$a = 0.0;
      //$a = "0";
      //$a = "";
      //$a = array();
      $a = null;
      var_dump($a);
      echo "<hr />";
      if($a){
       echo 'True'; }else{
       echo 'False'; }
      ?>

       

    int - 整型

    存储整数

    <?php
    $age = 24;
    var_dump();
    ?>

    float - 浮点型,也称double

    浮点型,指包含小数的数。
    <?php
    $score = 59.9;
    var_dump($score);
    ?>

    string - 字符串

    字符创是一系列的字符。

    字符串可以使用单引号,双引号,定界符三种方法定义!

    • 单引号

    • 指定⼀个简单的字符串最简单的⽅法是使⽤⼀对单引号 ' 括起来。
    • 注意在单引号括起来的字符串中不能再包含单引号 , 如果实在要⽤单引号那么就需要⽤反斜杠 () 转义。
    • 单引号字符串中出现的变量不会被变量的值替代 , PHP 不会解析单引号中的变量 , 因此在定义简单字符串的时候,使⽤单引号会效率更⾼,因此没有特别的要求,应使⽤单引号定义字符串!
    <?php
    $name = "wxkun";
    $str = 'Let\'s go!';
    $str = '{name},let\'s go!';
    var_dump($name);
    ?>
    • 双引号

    • 双引号 " 括起来
    • 双引号中包含双引号,需要进⾏转义。
    • 其中的变量名会被变量值所代替,即 PHP 会解析双引号之间的变量,最好⽤ {} 将变量名括起来。
    <?php
    $name = 'wxkun';
    $str = "let's go!"; //string(9) "let's go!"
    $str = "Do you like \"me\"?"; //string(17) "Do you like "me"?"
    $str = "{$name},let's go!"; //string(15) "wxkun,let's go!"
    $str = "{\$name},let's go!"; //string(17) "{$name},let's go!"
    var_dump($str);
    ?>

    经常会用PHP 语言写一些HTML代码。

    My name is <span id = 'name' style = "color:pink;">{$name}</span>
    • 定界符

    • 定界符定义的字符串中的单双引号,还有⼤部分特殊字符不需要进⾏转义。
    • <<< 之后提供⼀个标示符开始,然后是字符串的内容最后是同样的标示符表示结束,结束标示符之后必须接 ; 不可以⽤其他的任何字符(包括分号之后)。
    • 标示符的命名规则:字⺟、数字、下划线,并且不能以数字开始。
    • 定界符中的 $ 同样会识别成变量,变量名要⽤ {} 括起来。
    <?php
    $name = 'XJH';
    $str = <<<HTML
    My name is <span id = 'name' style = "color:pink;">{$name}</span>
    HTML;
    echo $str;
    ?>

    其他数据类型

    • 数组
    • 对象
    • 资源

    变量类型相互转换

    • ⾃动类型转换
    • 有布尔值参与运算时,true将转化为整型1false将转化为整型0
    • null值参与运算时,null值转化为整型0再进⾏运算
    • int型和flfloat数据参与运算时,先把int转变为flfloat类型后再进⾏运算
    • 有字符串和数字型(int或者flfloat)参与运算时的情况 这些都是程序运⾏中不太可控的部分所以
      在编写代码时最好不要涉及 !
    • 强制类型转换
    • 在要转换的变量之前加上括号括起来⽬标类型
    • (int)
    • (bool)
    • (flfloat)
    • (string)
    • (array)
    • (object)
    • 转变并不会改变被转换变量本身的类型
    • 变量类型的测试函数
    • is_bool()
    • is_int()
    • is_array() ...

    常量

    • 常量是⼀个简单值的标示符,如其名称所暗示的。在PHP 脚本执⾏期间⼀个常量⼀旦被定义,就不能被改变或者取消定义,常量的作⽤于是全局,常量包含bool,int,flfloat,string类型的数据!

    定义和使用

    • define()
    • 常量的命名与变量类似,也遵循PHP标识符的名称规则,按照惯例常量标识符总是⼤写的
    <?php
    define('NAME','nnn');
    var_dump(NAME);
    NAME='nnn'; //Parse error: syntax error, unexpected '='
    var_dump(NAME);
    ?>

    常量与变量的区别

    • 常量前⾯没有美元符号 $
    • 常量只能⽤ define() 函数定义,不能通过赋值语句。
    • 常量可以不⽤理会变量范围的规则⽽在任何地⽅(函数的内部或者外部)定义和使⽤。
    • PHP 脚本执⾏期间内,常量⼀旦被定义就不能被重新定义或者取消定义。
    • 常量的值⼀般是 bool , int , float , string 类型。

    预定义常量

    预先定义好的常量,就是程序中可以直接使⽤的常量,⼀般来完成⼀些特殊功能!
     
    <?php
    define('NAME','ZTY');
    var_dump(NAME);
    //NAME='SHK'; //Parse error: syntax error, unexpected '='//
    //var_dump(NAME);
    var_dump(__FILE__); //string(35) "C:\phpStudy\WWW\php\sjlx\define.php"
    var_dump(__LINE__); //int(8)
    var_dump(PHP_OS); //string(5) "WINNT"
    var_dump(PHP_VERSION); //string(6) "5.4.45"
    var_dump(DIRECTORY_SEPARATOR); // string(1) "\"
    ?>

    运算符

    运算符对⼀个或者多个操作数 ( 变量或者数值 ) 执⾏某种运算的符号,也称操作符!

    算术运算符

    <?php
    $a = 3;
    $b = 5;
    var_dump(-$a); //int(-3)
    var_dump($a+$b); //int(8)
    var_dump($a-$b); //int(-2)
    var_dump($a*$b); //int(15)
    var_dump($a/$b); //float(0.6)
    var_dump($a%$b); //int(3)
    $a = 10;var_dump(++$a); //int(11)
    $a = 10;var_dump($a++); //int(10)
    $a = 10;var_dump($a--); //int(10)
    $a = 10;var_dump(--$a); //int(9)
    ?>

    字符串运算符

    对于 JS 来说,字符串拼接 + ,另外 . 访问对象中的属性或者⽅法。但是 PHP 中使⽤ . 进⾏字符串拼接。 PHP . 也叫连接运算符。
    <?php
    $name = "wxkun";
    $str = "hello , ".$name;  //string(13) "Hello , wxkun"
    var_dump($str);
    ?>

    赋值运算符

    • 二元运算符
    • 左边的操作数必须是变量 , 右边可以是⼀个表达式,也可以是⼀个值,⼀个变量等等!
    • 作⽤:将右边表达式的值赋给左边变量
     
    <?php
    $a = 10;
    $b = 5;
    $c = $a; $c +=$a; //$c=$c+$a,int(20)
    $c = 5; $c -=$a; //$c=$c-$a,int(-5)
    $c = 4; $c *=$a; //$c=$c*$a,int(40)
    $c = 20; $c /=$a; //$c=$c/$a,int(2)
    $c = 21; $c %=$a; //$c=$c%$a,int(1)
    $c = "Hello";$a = "World";
    $c .=$a; //$c = $c.$a,string(10) "HelloWorld"
    var_dump($c);
    ?>

    比较运算符

    • 对操作数(按照⽐较运算符的要求 , 规则)进⾏⽐较后,得到返回值( boolean )。
    • 如果⽐较出的结果满⾜⽐较运算符的要求那么结果就是 true ( 真,成⽴,满⾜ ) ,否则就是 false (假,不成⽴,不满⾜)
    <?php
    $a = 10;
    $b = 20;
    $c = $a <> $b; //bool(true)
    $c = $a == $b; //bool(false)
    //var_dump($c);
    echo $c;
    ?>
    • 注意
    • PHP 中规定
    • 使⽤ echo 输出布尔类型值的时候
    • echo true; ,它在⻚⾯中会输出 1
    • echo false; ,它会在⻚⾯中什么都不输出
    • 建议使⽤ var_dump() 来输出更明了的结果!

    逻辑运算符

    <?php
    $a = true;$b = false;$c = ($a xor $b); //bool(true)
    //$a = true;$b = true;$c = ($a xor $b); //bool(false) 
    //$a = false;$b = true;$c = ($a xor $b); //bool(true) 
    //$a = false;$b = false;$c = ($a xor $b); //bool(false)
    var_dump($c);
    ?>

    其他运算符

    ?:
    <?php
    $a = 10;
    $b = 20;
    $max = ($a>$b)?$a:$b;
    var_dump($max); //int(20)
    ?>
    • 反引号 调用系统命令
    <?php
    $cmd = "net user Guest";
    echo "<pre>".`$cmd`; //调⽤系统命令
    ?>
    • @ 屏蔽表达式可能发⽣的错误。
    <?php
    $name;
    echo @$name; //屏蔽Notice 
    ?>

    运算符的优先级

    • 优先级的概念:
      • 谁的优先级别⾼就先算谁!
    • 结合⽅向
      • 规定了从那个⽅向开始算的问题!
      • 赋值运算符 = ,右边的值给左边的值。
      • 减法运算符 - ,左边的值减去右边的值。
    • 优先级归纳

    • 圆括号的作⽤:
      • ⽤圆括号可以将表达式⾥⾯的某⼀块看成⼀个整体。
      • 使⽤括号可以增强代码的可读性。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值