(独孤九剑)--基本语法

【一】基本语法概述

对于一看就懂的也要亲自动手操作,不要骗自己,写不出来代码就是不会!!!

 

内容列表:

【三】变量
【四】输出显示命令
【五】注释
【六】数据类型
【七】数据类型的查看与判断
【八】数据类型的转换
【九】常量
【十】变量
【十一】变量引用
【十二】表达式与运算符

 

【二】第一段PHP代码

www文件下新建文档demo.php,输入代码

1 <?php
2     phpinfo();
3 ?>

保存运行后,查看效果即可看到PHP相关信息的列表

<?php为PHP开始

?>为PHP结束

代码解析:phpinfo()函数,解析当前电脑的PHP相关详细信息

 

【三】变量

1. 在相同作用域里,变量拥有覆盖性。即后面的变量会覆盖之前的变量,例如

<?php
    $a = 1;
    $b = 2;
    $a = 2;
    echo $a+$b;
?>

输出结果为4,因为变量$a重置覆盖了。

2. 变量特点:

                  ①赋值性,$a = 5;将5赋值给a

                  ②覆盖性;

                  ③变量必须以$符开头;

                  ④$后不能以数字开头;

                  ⑤区分大小写;

                  ⑥禁止使用特殊字符;

                  ⑦变量名要有意义,便于交流理解;

 

【四】输出显示命令

共有三种 echo();    print_r();       var_dump();

输出值:print_r();   

正常输出echo();

输出数据类型:var_dump(),会输出数据类型和长度。 一般是开发的人看的,它输出更多的信息。

注意:echo 和 print_r 只是输出基本信息,不会输出结构,一般用于返回信息给用户看。

输出字符串时需要加"",这里注意中文都是字符串

可以输出整型,字符串,变量

 

【五】注释

作用:1. 对重点进行标注解释;2. 方便查找;3. 通俗易懂;4.生成文档

分类:

        1. 单行注释//

//$name = "Tony";

       2. 单行注释#

#$name = "Tony";

       3. 多行注释/* */

/*
$name = "Tony";
$name = "Tony-One"
*/

 

【六】数据类型

数据类型分为标准数据类型和复合数据类型

标准数据类型:整型,浮点型,布尔值,字符串,null。

复合数据类型:数组,对象

新类型:资源数据类型

下面列举几个介绍下

1. 布尔值:一般程序里1位true,0为false

2. 字符串:

          声明方法有3种:

                   ①单引号声明'name'

                   ②双引号声明"name"

                   ③定界符 / 字界符:在 <<< 之后提供一个标识符,然后是字符串,然后是同样的标识符结束字符串。

          字符串拼接用 . 即可,

3. 字界符 / 定界符实例:

   注意:边界符也可以解析变量

<?php
$main = <<< ETO
我是二年级<br>
三班<br>
学习委员
ETO;
echo $main;
?>

4. 单引号与双引号区别:

      ①双引号解析变量,单引号不能解析变量,例如

<?php
$name = "Tony";
$info = "我的名字叫 $name";
echo $info;
?>

双引号可以解析变量$name,所以可以输出结果--我的名字叫Tony。但是单引号无法解析变量,所以会输出---我的名字叫$name

      ②双引号可以解析转义字符,而单引号不能。边界符也可以解析变量

       转义字符,例如HTML实体字符&lt和&gt,转义为< 和 >,举例:

<?php
$name = "Tony";
$info = "我的名字叫&lt$name&gt";
echo $info;
?>

     ③单引号效率略高于双引号;

     ④可以互插,当双引号里插入带有变量的单引号时,会解析出变量

5. null类型

  函数null的三种情况①给变量赋值为null,例如$name = null; ②变量没有赋值,例如$name; ③通过unset()销毁变量

<?php
$value = null;
var_dump($value);
?>

输出结果为NULL

 接下来介绍3个与NULL相关的函数empty(),unset()和inset()

    ①empty()函数判断是否为空,若为null空或者false返回true,否则返回false。例如

<?php
$value = null;//或者为0false / 1true
if(empty($value)){
    echo "为空,执行真区间";
}else{
    echo "不为空,执行假区间";
}
?>

   ②inset()函数,传入一个或多个变量,变量用逗号分开。只要有一个为null,则返回false,否则返回true

     可以与empty()对比,区别在于inset()可以传入多个变量,同时判断多个,出现null情况时返回false,与empty()正好相反.

     只要传入的不是空,则返回true

<?php
$value1 = false;
$value2 = 1;
$value3 = null;
if(isset($value1,$value2,$value3)){
    echo "执行真区间";
}else{
    echo "执行假区间";
}
?>

   ③unset()函数,销毁变量,返回null,例如上个例子修改

<?php
$value1 = false;
$value2 = 1;
$value3 = null;
unset($value1);
if(isset($value1,$value2,$value3)){
    echo "执行真区间";
}else{
    echo "执行假区间";
}
?>

这里我用unset()销毁了$value1变量,所以$value变为null,那么isset()里传入null后会执行else代码块

6. 复合数据类型---对象,数组

   所谓复合类型,就是一个类型里可以同时存入多种数据类型(字符串,整型,浮点,布尔值等)

7. 资源类型

   打印结果只会显示单词resource,而不会显示出其他信息。

   具体包含①Word,excel等文件;②图片;③音乐;④电影;⑤网页;⑥数据库等

   资源就是操作可见和不可见的文件,网络和数据。以后会经常设计到操作图片和网络

 

【七】数据类型的查看与判断

(1)查看数据类型

    ① 查看数据类型:gettype(),对应强制转换数据类型settype(val,type)

     获得变量的类型,例如输出string

<?php
$name = "Tony";
echo gettype($name);
?>

    ②查看数据类型和值:var_dump()

   传入一个变量,输出变量类型和值,例如输出string(4) "Tony"

<?php
$name = "Tony";
echo var_dump($name);
?>

(2)判断数据类型

PHP在判断数据类型上很智能,使用is_系列函数。

is_types系列函数可以判断数据类型,返回布尔值boolean,即只会返回true或false

如果是则返回true,否则返回false

例如:

<?php
$name = "Tony";
echo is_string($name);//判断类型---为真所以返回1
var_dump($name);//检验类型----string(4) "Tony"
?>

is_types系列的列表:

整型is_init();浮点型is_float();布尔值is_bool();字符串is_string();数组is_array();对象object();是否为空is_null();

资源is_reource();标量is_scalar();数字is_numeric();函数is_callable();

 

 【八】数据类型的转换

数据类型转换包含自动转换与强制转换

PHP在5.x版本是弱类型的编程语言。弱类型就是在声明变量时,不需要指定变量的类型。意思是如果我要声明一个变量,不用在前面加上类型

PHP在7.0版本开始,可以强制指定类型来声明变量,也可以不用

 1. 布尔值的自动类型转换

     自动类型转换:就是数据类型在某些情况下自动变为其他类型参与运算

     转换时机:运算和判断时,某些值会自动转换

     自动转换情况:

     ①整型的0为假,其他为真;②浮点型0.0为假,其他为真;③空字符串为假,含有空格为真;

     ④字符串的0为假,其他为真;⑤空数组为假,里面有值为真;⑥空null为假;⑦未声明成功的资源为假。

    案例:字符"0"自动转化为整型0

<?php
$float = "0";
if($float){
    echo "真";
}else{
    echo "假";
}
?>

2. 其他类型的自动类型转换

   布尔值--->整型,浮点型

   字符串--->整型,浮点型

3. 强制类型转换

   强制类型转换有三种方式:

   (1)intval(),floatval(),strval()

   (2)变量前加(),里面加上类型,转化后赋值给其他值

   (3)settype(变量,类型)直接改变变量本身

(1)案例:整型转化为字符型strval()

<?php
    $value = 123;
    $valueStr = strval($value);
    var_dump($valueStr);
?>

(2)案例:整型转化为字符型,变量前加(),里面加上类型,转化后赋值给其他值

<?php
    $value = 123;
    $valueStr = (string)$value;
    var_dump($valueStr);
?>

(3)整型转化为字符型,settype(变量,类型)直接改变变量本身

<?php
    $value = 123;
    $valueStr = settype($value, 'string');
    var_dump($value);
?>

  强制转换时情况:

   ①空转整型时会转为0;②空转为浮点型时转为0;③空转为字符串会转为空字符串;④浮点123.0转为字符串123;

   ⑤settye("变量","null")等价于unset();

 

【九】常量

(1)常量

        使用范围:定义工作目录,账号密码,版本号

       简介:不变的量

       定义:define(常量名,常量值)

       注意:①常量名通常大写;②常量名通常加引号;③调用常量时不能用引号包裹;④常量名只建议用字母或下划线;

<?php
    define("NAME", 'Tony');
    echo "我的名字是".NAME."<br>";
//我的名字是Tony
echo "我的名字是NAME";
//我的名字是NAME
?>

(2)系统内置常量

       LINE:当前所在行;FILE:当前文件所在服务器的路径;FUNCTION:当前函数名;CLASS:当前类名;

       METHOD:当前成员方法名;PHP_OS:PHP运行的操作系统;PHP_VERSION:PHP版本;

       TRAIT:Trait特征的名字,PHP5.4新加;DIR:文件所在目录;NAMESPACE:当前命名空间的名称(区分大小写);

(3)defined()函数来做安全机制

       defined()主要为了防止他人绕过安全检查文件

       语法:defined(常量)

       作用:向函数后面传入常量,如果常量定义了就返回true,否则返回false

(4)defined()与define()区别

define--->定义一个常量
defined--->检查某个名称的常量是否存在

define("CONSTANT", "Hello world.");
if (defined('TEST')) {
echo TEST;
}

(5)常用场景

define与defined的组合最常见的场景是,可以用来控制文件的访问权限。比如,我们不希望一个模板文件被直接通过链接地址被别人访问。我们可以在每个模板文件头写代码控制

 

【十】变量

(1)可变变量

可变变量就是在已经声明的变量前再加上变量符$,例如:

<?php
    $value = "name";
    $name = "Tony";
    echo $$value;
?>

 对于echo $$value来说,解析了两次变量,第一次解析为$name,然后打二次解析$name为输出结果Tony

(2)外部变量

外部变量就是在使用过程里规定的变量

(3)超全局变量

   PHP 中的许多预定义变量都是“超全局的”,这意味着它们在一个脚本的全部作用域中都可用。在函数或方法中无需执行 global $variable; 就可以访问它们。
   这些超全局变量是:
   $_COOKIE:得到会话控制里cookie传值;$_GET:得到get传值结果;$_POST:得到post传值结果;

   $_SESSION:得到会话控制力session传值;$_FILES:得到文件上传结果;$_REQUEST:即能得到post传值,又能得到get传值

(4)环境变量(也是超全局)

      环境变量主要用到$_SERVER和$_ENV两个环境变量,不过$_ENV逐渐被新版本废弃了

      查看环境需要用到phpinfo();

      $_SERVER 这种超全局变量保存关于报头、路径和脚本位置的信息

     常用的几个环境变量名:

      ①$_SERVER['PHP_SELF']:返回当前执行脚本的文件名;②$_SERVER['REQUEST_METHOD']:返回当前页面请求方法get / post

      ③$_SERVER['REQUEST_URI']:返回当前页面的URI;④$_SERVER['SERVER_SOFTWARE']:返回用的哪种服务器;

      ⑤$_SERVER['REMOTE_ADDR']:返回浏览当前页面的用户的 IP 地址;⑥$_SERVER['SERVER_ADDR']:返回当前运行脚本所在的服务器的 IP 地址;

      ⑦$_SERVER['SCRIPT_FILENAME']:返回当前执行脚本的绝对路径;⑧$_SERVER['SCRIPT_NAME'] :返回当前脚本的路径;

      ⑨$_SERVER['HTTP_USER_AGENT']:当前访问这个网址的电脑和浏览器的情况;

      ⑩$_SERVER['HTTP_REFERER']:上级来源(用户从哪个地址进入当前网页的);

      ⑪$_SERVER['REQUEST_TIME']:返回请求开始时的时间戳(例如 1577687494);

(5)静态变量static

特点:声明一个静态变量,第二次调用函数的时候,静态变量不会再初始化。

场景:例如想统计函数被多次调用的次数,可以在函数内部定义一个静态变量,从而保证变量不会在每次加载时被初始化

<?php
    function demo(){
        static $num = 0;
        $num++;
        echo "我被调用了".$num."次<br>";
    }
    demo();
    demo();
    demo();
?>

原理:静态变量的值在计算机内存会自动保存;而正常变量的值在使用完之后便销毁

 

【十一】变量引用

(1)简单引用

<?php
    $a = 1;
    $b = $a;
$b = 2;
echo "a的值是$a".",b的值是$b"; ?>

 输出结果:a的值是1,b的值是2

(2)公用地址引用

还是上面的例子,我对$b = $a加修改,改为$b = &$a

<?php
    $a = 1;
    $b = &$a;
    $b = 2;
    echo "a的值是$a "." ,b的值是$b";
?>

输出结果会变为a的值是2,b的值是2

原因解析:$b = &$a会使得$a和$b共用一个内存地址

 

【十二】表达式与运算符

 (1)算术运算符

            +,-,*,/,%,=

           注意:①=是赋值,==是比较;②优先级:先乘除,后加减,有括号先执行小括号

 (2)自加自减运算

           $a++:先赋值后运算;++a:先运算后赋值

 (3)赋值运算符

         如$a = 5就是将右边的5赋值给左边的变量$a

         还有+=,-=,*=,/=,%=

 (4)比较运算符

          等于==;全等===;

          不等于!=;不全等于!==;不等于<>

           大于>;小于<;大于等于>=;小于等于<=;

  (5)逻辑运算符:与或非

     与:&&,and          或:||,or       非:!,xor

    xor异或的用法:

                            例如计算21 xor 2的结果?

                            先将21二进制,然后计算,具体以后再论

 (6)位运算

        位运算在开发里用的极少,了解即可,基本为进制运算

 (7)三元运算符和其他运算符

        1. 三元运算符

           相当于if..else结构,不过写法上更加简洁

           语法:$x?"真代码块":"假代码块";,举个例子

<?php
    $a = 3;
    $b = 4;
    echo $a>$b?"条件为真":"条件为假";
?>

         分析:因为3不大于4,所以执行第二条代码块。

        2. 其他运算符

           ①=>数组下标访问符;

           ②->对象访问符;

<?php
    //向obj对象里追加了一个成员属性username
    $obj -> username = "Tony";
    echo $obj -> username;
?>

           ③instanceof判断某个对象是否来自某个类,是则返回true,否则返回false

<?php
    $obj = new StdClass();//实例化一个对象
    if($obj instanceof StdClass){//判断某对象是否由某个类实例化
        echo "真";
    }else{
        echo "假";
    }
?>

           ④反引用的本质就是在操作系统执行该命令

 (8)字符串运算符

         串接和串接赋值

<?php
$a = "Hello";
$b = $a . " world!";
echo $b; // 输出 Hello world!
$x="Hello";
$x .= " world!";
echo $x; // 输出 Hello world!
?>

 

 

【拓展】流程控制

1. if..else..

   举个例子:结合布尔值和条件判断

$value = 0;
if($value){
    echo "布尔值为真";
}else{
    echo "布尔值为假";
}

代码解析:因为$value设为0,而boolean值为1时真,为0时假。所以这里会输出布尔值为假

 

     

 

 

 

【总结】

1. 文件命名禁止中文,不要加空格,区分大小写;

2. 销毁变量用unset();检验单个变量是否为空empty(),为空则返回true;检验多个变量是否为空isset(),为空则返回false;

3. 输出数据类型var_dump(),该函数还会打印出字节数,UTF-8里一个中文为3个字节;

4. form表单的action未填写时默认提交到本页

 

.

posted @ 2018-03-14 15:12  剑仙6  阅读(203)  评论(0编辑  收藏  举报
欢迎访问个人网站www.qingchun.在线