PHP基础参考02-基础语法参考1

来源:PHP基础参考02-基础语法参考1 - 9ong PHP基础参考03-基础语法参考2 - 9ong

基本语法

  • PHP标记

    如果文件内容是纯 PHP 代码,最好在文件末尾删除 PHP 结束标记。这可以避免在 PHP 结束标记之后万一意外加入了空格或者换行符,会导致 PHP 开始输出这些空白,而脚本中此时并无输出的意图。

  • PHP文件智能混合内容

    常用于分离HTML文件。如果懂得这个知识点,不仅仅可以用于分离HTML文件。

    凡是在一对开始和结束标记之外的内容都会被 PHP 解析器忽略,这使得 PHP 文件可以具备混合内容。 可以使 PHP 嵌入到 HTML 文档中去。

    <?php if ($expression == true): ?>
    This will show if the expression is true.
    <?php else: ?>
    Otherwise this will show.
    <?php endif; ?>
    
  • 短标记

    短标记仅在通过 php.ini 配置文件中的指令 short_open_tag 打开后才可用,或者在 PHP 编译时加入了 --enable-short-tags 选项。

    
    <? echo 'this is the simplest, an SGML processing instruction'; ?>
    <?= expression ?> This is a shortcut for "<? echo expression ?>"
    

    还会看到有ASP 风格标记,仅在通过 php.ini 配置文件中的指令 asp_tags 打开后才可用。

    <% echo 'You may optionally use ASP-style tags'; %>
    <%= $variable; # This is a shortcut for "<% echo . . ." %>
    

    我们不建议使用短标记。

类型

PHP 支持 10 种原始数据类型。

四种标量类型:

  • bool(布尔型)
  • int(整型)
  • float(浮点型,也称作 double)
  • string(字符串)

四种复合类型:

  • array(数组)
  • object(对象)
  • callable(可调用)
  • iterable(可迭代)

还有两种特殊类型:

  • resource(资源)
  • NULL(无类型)

这里注意到关于“双精度(double)”类型,实际上 double 和 float 是相同的,由于一些历史的原因,这两个名称同时存在。

注意:变量的类型通常不是由程序员设定的,确切地说,是由 PHP 根据该变量使用的上下文在运行时决定的。

弱类型语言php经常被人吐槽的地方,但也会引起很多人喜欢,毕竟不需要人为过多的去考虑一些类型转换。

  • 布尔类型Boolean

    • PHP中true、false,不区分大小写。

    • 转换为布尔值

      要明确地将一个值转换成 boolean,用 (bool) 或者 (boolean) 来强制转换。但是很多情况下不需要用强制转换,因为当运算符,函数或者流程控制结构需要一个 boolean 参数时,该值会被自动转换。详见后续的类型转换判别。

    • 当转换为 boolean 时,以下值被认为是 false:

      布尔值 false 本身
      整型值 0(零)及 -0 (零)
      浮点型值 0.0(零)-0.0(零)
      空字符串,以及字符串 "0"
      不包括任何元素的数组
      特殊类型 NULL(包括尚未赋值的变量)
      从空标记生成的 SimpleXML 对象
      

      所有其它值都被认为是 true(包括任何资源resource 和 NAN)。

  • 整型Integer

    • 支持多种进制整型

      整型值可以使用十进制,十六进制,八进制或二进制表示,前面可以加上可选的符号(- 或者 +)。 可以用 负运算符 来表示一个负的integer。

      要使用八进制表达,数字前必须加上 0(零)。要使用十六进制表达,数字前必须加上 0x。要使用二进制表达,数字前必须加上 0b。

    • 7.4后支持下划线

      $a = 1_234_567; // 整型数值 (PHP 7.4.0 以后)

    • 整型溢出会被解释为float。

      如果给定的一个数超出了 integer 的范围,将会被解释为 float。同样如果执行的运算结果超出了 integer 范围,也会返回 float。

    • php没有整除运算符的

      PHP 中没有整除的运算符。1/2 产生出 float 0.5。 值可以舍弃小数部分,强制转换为 integer,或者使用 round() 函数可以更好地进行四舍五入。

      注意: 从 PHP 7.0.0 开始,函数 intdiv() 可以用于整数除法

    • 转换为整型

      要明确地将一个值转换为 integer,用 (int) 或 (integer) 强制转换。还是那句话,大多情况下,不需要强制转换类型,因为当运算符,函数或流程控制需要一个 integer 参数时,值会自动转换。还可以通过函数 intval() 来将一个值转换成整型。类型转换的判别

      null会转化为0。

      false 将产生出 0(零),true 将产生出 1。

      当从浮点数转换成整数时,将向下取整。

      PHP 7.0.0 起,NaN 和 Infinity 在转换成 integer 时,不再是 undefined 或者依赖于平台,而是都会变成0。

  • Float浮点型

    永远不要相信浮点数结果精确到了最后一位,也永远不要比较两个浮点数是否相等。如果确实需要更高的精度,应该使用任意精度数学函数PHP: BC 数学 函数 - Manual或者 PHP: GMP 函数 - Manual

  • String字符串

    一个字符串 string 就是由一系列的字符组成,其中每个字符等同于一个字节。 这意味着 PHP 只能支持 256 的字符集,因此不支持 Unicode 。(一个字节8位,只能支持256的字符集,对于多字节的unicode,我们经常会用到mbstring的扩展)

    注意: string 最大可以达到 2GB。

    字符串以及为什么说 PHP 不支持 Unicode_zhoucy-CSDN博客_php字符串unicode

- 语法

    - 单引号:不解析变量,不解析转义字符
    - 双引号:解析变量,解析转义字符
    - Heredoc

        以<<<开头定义一个结构:<<<LABEL

        中间是字符串

        结束时所引用的标识符必须在该行的第一列,并以定义的结构字符串为结尾LABEL;,注意分号;。

        ```
        $bar = <<<LABEL
        i am a chinese
        LABEL;
        ```

        Heredoc效果类似于双引号
    - Newdoc


        Newdoc效果类似于单引号,不解析变量不解析转义字符。

        ```
        $bar = <<<'LABEL'
        i am a chinese
        LABEL;
        ```
  • Array数组

    PHP 中的数组实际上是一个有序映射。映射是一种把 values 关联到 keys 的类型。此类型在很多方面做了优化,因此可以把它当成真正的数组,或列表(向量),散列表(是映射的一种实现),字典,集合,栈,队列以及更多可能性。由于数组元素的值也可以是另一个数组,树形结构和多维数组也是允许的。

    • key与value

      php的数组实在是万能,key 可以是 integer 或者 string。value 可以是任意类型,而且key相同时,会覆盖保留最后一个。当然key是可选项,未指定时,PHP 将自动使用之前用过的最大 integer 键名加上 1 作为新的键名。

    • 转换数组

      (array)$value

      对于任意 integer,float,string,boolean 和 resource 类型,如果将一个值转换为数组,将得到一个仅有一个元素的数组,其下标为 0,该元素即为此标量的值。

      如果一个 object 类型转换为 array,则结果为一个数组,其单元为该对象的属性,经常会有一些不可预知的行为。

- 数组函数

    [数组函数](https://www.php.net/manual/zh/ref.array.php)
  • Iterable可迭代对象

    通俗易懂PHP迭代生成器 - 9ong

  • Object对象

    不建议将数组转换成Object对象,在7.2前后的版本对于数组转换成Object对象有不同的属性值输出。

  • Resource资源类型

    资源 resource 是一种特殊变量,保存了到外部资源的一个引用。

    资源类型变量保存有为打开文件、数据库连接、图形画布区域等的特殊句柄。

    • 资源释放

      引用计数系统是 Zend 引擎的一部分,可以自动检测到一个资源不再被引用了(和 Java 一样)。这种情况下此资源使用的所有外部资源都会被垃圾回收系统释放。因此,很少需要手工释放内存。

      注意: 持久数据库连接比较特殊,它们不会被垃圾回收系统销毁。参见数据库永久连接一章。

    • 资源函数

      资源是通过专门的函数来建立和使用的。

      PHP: 资源类型列表 - Manual

  • NULL

    NULL的值就一个:不区分大小写的null。

  • callback类型

回调函数:普通函数、匿名函数、对象的方法、静态类方法

PHP是将函数以string形式传递的。

PHP是通过数组array传递对象的方法和静态类的方法。


比如:一些函数如 call_user_func() 或 usort() 可以接受用户自定义的回调函数作为参数:

```php
// 普通定义的函数
call_user_func('my_callback_function'); 

// 静态类方法
call_user_func(array('MyClass', 'myCallbackMethod')); 

// 实例化对象方法
$obj = new MyClass();
call_user_func(array($obj, 'myCallbackMethod'));

// 静态类方法2
call_user_func('MyClass::myCallbackMethod');

//匿名函数
call_user_func(function(...){....});
```
  • 强制类型转换

    (int), (integer) - 转换为整形 integer
    (bool), (boolean) - 转换为布尔类型 boolean
    (float), (double), (real) - 转换为浮点型 float
    (string) - 转换为字符串 string
    (array) - 转换为数组 array
    (object) - 转换为对象 object
    (unset) - 转换为 NULL // 不建议再使用,在php8中已经移除
    

变量

  • 传值赋值与引用赋值

    变量默认总是传值赋值。

    PHP 也提供了另外一种方式给变量赋值:引用赋值。

    使用引用赋值,简单地将一个 & 符号加到将要赋值的变量前(源变量)

    $foo = 'Bob';              // 将 'Bob' 赋给 $foo
    $bar = &$foo;              // 通过 $bar 引用 $foo
    

    注意:引用赋值,而不是传址赋值,虽然两者效果一样。后面我们会说到这两个区别

  • 初始化变量

    虽然在 PHP 中并不需要初始化变量,但对变量进行初始化是个好习惯。

    PHP: 预定义变量 - Manual,比如超全局变量

  • 变量范围

    • 首先我们不建议使用global关键字来引入函数/方法以外的变量,可以的话通过传参来实现。

    • 有个特别注意的地方:大部分的 PHP 变量只有一个单独的范围。这个单独的范围跨度同样包含了 include 和 require 引入的文件。例如:

      $a = 1;
      include 'b.php';    
      

      变量$a将在b.php文件中生效。

- 递归中常用的静态变量

    通常会在一个递归中统计或累加数值,但由于递归函数属于局部函数,普通变量在函数再次被调用时,会被释放重新初始化。为了累计或累加数值,我们需要一个在函数再次被调用时不会被初始化的变量,那就是static的静态变量

    ```php
    function test()
    {
        static $count = 0;

        $count++;
        echo $count;
        if ($count < 10) {
            test();
        }
        $count--;
    }
    ```
  • 可变变量

    个可变变量获取了一个普通变量的值作为这个可变变量的变量名。在上面的例子中 hello 使用了两个美元符号($)以后,就可以作为一个可变变量的变量了。例如:

    $$a = 'world';
    

    这时,两个变量都被定义了:a 的内容是“hello”并且hello 的内容是“world”。

    注意了:$$a[1] 这怎么解析?是一种模棱两可的变量,需要人为的定界:

    
    ${$a[1]}
    //或
    ${$a}[1]
    

    再注意了:超全局变量和$this都是特殊变量,不能被动态引用为可变变量。

常量

  • 定义常量

    除了define函数外,还可以通过关键字const定义常量。一般为大写。

    使用 const 关键字定义常量必须处于最顶端的作用区域,因为用此方法是在编译时定义的。这就意味着不能在函数内,循环内以及 if 或 try/catch 语句之内用 const 来定义常量。

  • 支持数组及表达式

    php5.6之后,允许将常量定义为表达式。注意和类中的常量比较区别。

    const HELO = "hello";
    const HWWW = HELO." World";//表达式
    const AAAA = ["a",'b'];
    
  • 魔术常量

    大家可能听过php的魔术方法,现在我们看看魔术常量。

    有些魔术常量的值随着他们在代码中的位置改变而改变,比如line,__file__等,他们不区分大小写。

    php令人恼的就是不统一的有些大小写敏感有些不区分大小写。

    PHP: 魔术常量 - Manual

表达式

PHP 是一种面向表达式的语言,从这一方面来讲几乎一切都是表达式。

PHP: 表达式 - Manual

没有什么太多让人意外的知识点。

运算符

运算符,通常会提到一元运算符,比如与或非++--;二元运算符,比如加减乘除;三元运算符(条件运算符),比如也是唯一的三元运算符:?: 。

  • 运算符优先级

  • 算数运算符

    • 整除。php中是没有整除运算符的,/ 只是除法,总是会返回浮点数,除非两个操作数都是整数,否则需要通过round或ceil再次取整获得整数,也可以通过intdiv函数。

    • 求幂。5.6之后引入了求幂运算符 ** , a **b ,求a的b次方的值。

  • 赋值运算符

    • = 并不是等于的意思,而是将右边表达式的值赋值给左边的运算数。

      除非特别说明的Object对象外,php中的赋值都是传值赋值,也就是拷贝赋值。即左右变量的变量互不影响。

    • 引用赋值

      这里又要先把object对象和其他类型分开说,object对象的赋值表达式默认是传址赋值,而其他类型默认是传值赋值,需要通过&=需要才能达到引用赋值效果(传址赋值与引用赋值虽然效果一样,但原理是不一样的),object对象需要通过clone关键字才能做到传值赋值(拷贝传值)。

    注意:new关键字就是返回一个引用,也就是引用赋值。
  • 位运算符

    看理论都很好理解,但实际应用,多少会有点懵逼的位运算。

    有一个php自带的很好的案例,我们在工作设计中也可以参考借鉴:

    PHP 的 ini 设定 error_reporting 使用了按位的值,
    提供了关闭某个位的真实例子。要显示除了提示级别
    之外的所有错误,php.ini 中是这样用的:
    
    E_ALL & ~E_NOTICE
    
    具体运作方式是先取得 E_ALL 的值:
    
    00000000000000000111011111111111
    再取得 E_NOTICE 的值:
    00000000000000000000000000001000
    然后通过 ~ 将其取反:
    11111111111111111111111111110111
    最后再用按位与 AND(&)得到两个值中都设定了(为 1)的位:
    00000000000000000111011111110111
    
    error_reporting 也可用来演示怎样置位。只显示错误和可恢复
    错误的方法是:
    E_ERROR | E_RECOVERABLE_ERROR
    
    也就是将 E_ERROR
    00000000000000000000000000000001
    和 E_RECOVERABLE_ERROR
    00000000000000000001000000000000
    用按位或 OR(|)运算符来取得在任何一个值中被置位的结果:
    00000000000000000001000000000001
        
    
  • 比较运算符

    • 全等 ===

      全等大家都知道,再强调下,除了值相同外,类型也要相同。

      也就是说php的==是在类型转换后再比较两个变量的值。而===不转换类型,直接比较值和类型。

    • 太空船(组合比较符) <=>

      php7提供。太空船运算符,不仅仅比较是否相等,还给出大小,返回-1、0、1的值,而不是Boolean值。

      echo 1.5 <=> 1.5; // 返回0  相等
      echo 1.5 <=> 2.5; // 返回-1 小于
      echo 2.5 <=> 1.5; // 返回1 大于
      

      当然还可以比较字符串、数组、对象,但我们建议不要比较这些复杂的复合类型变量。

- 浮点数

    在php中,不建议通过运算符来比较浮点数,特别是和金钱有关的浮点数,金钱的设计,尽量不要出现浮点数,通过单位放大避免浮点数设计。

    不得已下,浮点数要采用BC函数或专门的数学计算扩展。

- 三元运算符(条件判断运算符)

    ? : 

    在5.3以后,支持省去中间部分表达式:

    ```php
    //$a = expr1 ? expr1 : expr3
    $a = expr1 ? : expr3
    ```

    上面的表达式意思是:如果expr1为true,则返回expr1,否则返回expr3。直接省略了中间表达式部分。

    注意:表达式返回的是值,而不是引用。

- NULL合并运算符

    php7提供。支持简单嵌套。

    这个表达式对于输入频繁检查判断的地方太有用了:

    ```php
    
    // NULL 合并运算符的例子
    $default = "default";
    $action = $_POST['action'] ?? $default ?? "default";

    // 以上例子等同于于以下 if/else 语句
    if (isset($_POST['action'])) {
        $action = $_POST['action'];
    } else {
        $action = 'default';
    }
    
    ```


    注意:表达式返回的是值,而不是引用。


- 错误控制运算符

    @ 当将其放置在一个 PHP 表达式之前,该表达式可能产生的任何错误信息都被忽略掉。注意是表达式之前。

    在现代编程思想中,我们不建议常使用他,尽量避免。

- 执行运算符
    
    反引号(``)。注意这不是单引号!PHP 将尝试将反引号中的内容作为 shell 命令来执行,并将其输出信息返回(即,可以赋给一个变量而不是简单地丢弃到标准输出)。使用反引号运算符“`”的效果与函数 shell_exec() 相同。

    我们可以将其等同于shell_exec函数,因为关闭了 shell_exec() 时反引号运算符是无效的。所以我们还是建议使用shell_exec函数显式的执行更好些。

- 逻辑运算符

    逻辑运算符,很多phper想到就是与或非: &&、 ||、 !这些符号,其实还有and、or、xor(异或,两个操作数不一样时返回true)

- 数组运算符

    - 数组联合+

        合并两个数组,如果存在相同的key,则用左边第一个数组的key和value

        ```php
        $arr = $array1 + $array2;
        ```
    - 数组全等判断

        === , 数组的全等条件:1、具有相同键值对;2、顺序一致;3、类型一样。

- 类型运算符

    - instanceof

        我们都知道instanceof可用于检测实例是否某个类或其父类。

        instanceof还可以检测实例是否实现了某个接口。

流程控制

顺序、条件、循环

if、elseif、else、while、for、foreach、continue、break、switch、case、return、include、require、goto等
  • 流程控制替代语法

    PHP 提供了一些流程控制的替代语法,包括 if,while,for,foreach 和 switch。替代语法的基本形式是把左花括号({)换成冒号(:),把右花括号(})分别换成 endif;,endwhile;,endfor;,endforeach; 以及 endswitch;。

    我们还是建议使用花括号方式,了解这个特别之处为了方便阅读旧php代码。

  • do-while

    do-while 循环和 while 循环非常相似,区别在于表达式的值是在每次循环结束时检查而不是开始时。和一般的 while 循环主要的区别是 do-while 的循环语句保证会执行一次。

    适用于至少执行一次的循环。

  • foreach

    特别指出的是在foreach中可以通过&引用符号修改数组或对象的元组。

    $arr = array(1, 2, 3, 4);
    foreach ($arr as &$value) {
        $value = $value * 2;
    }
    // $arr is now array(2, 4, 6, 8)
    unset($value); // 最后取消掉引用
    
  • break

    php中的break可以接受一个可选的数字参数来决定跳出几重循环。也就是说默认break是跳出当前循环也可以这么写:

    $a = 10;
    $arr = [....];
    while($a<100>){
        foreach($arr as $k=>$v){
            if($v===2){
                break 1;//和break;一样
            }elseif($v === 10){
                break 2;//跳出foreach,还跳出while循环
            }
            //do something
        }
        $a += 10;
    }
    
  • continue

    continue 接受一个可选的数字参数来决定跳过几重循环到循环结尾。默认值是 1,即跳到当前循环末尾。

    $a = 10;
    $arr = [....];
    while($a<100>){
        foreach($arr as $k=>$v){
            if($v===2){
                continue 1;//和continue;一样,跳到当前foreach循环结尾,执行下一次foreach循环
            }elseif($v === 10){
                continue 2;//跳出foreach,并跳到while循环的结尾,执行下一次while循环
            }
            //do something
        }
        $a += 10;
    }
    
  • switch

    为避免错误,理解 switch 是怎样执行的非常重要。switch 语句一行接一行地执行(实际上是语句接语句)。开始时没有代码被执行。仅当一个 case 语句中的值和 switch 表达式的值匹配时 PHP 才开始执行语句,直到 switch 的程序段结束或者遇到第一个 break 语句为止。如果不在 case 的语句段最后写上 break 的话,PHP 将继续执行下一个 case 中的语句段。

    所以break在switch是很重要的,也是很容易犯错的。

    如果switch嵌套在循环中,continue作用就类似于break,continue 1跳出switch结构(可以把switch看做一次循环,continue和break在一次循环中是一样的效果的),continue 2跳出switch,并跳到外面一层循环的尾部,开始下一次外面一层循环。break 2同理,但是直接跳出switch和外面一层循环。

  • match

    php8提供。

    很不错的控制流程,与switch很相似,但又不一样,match是强类型检测,switch/case是弱类型检测;match支持范围判断,switch只能是精确判断;match结构中条件表达式在花括号内。switch/case是传入条件,在case中检测处理。

    
    $return_value = match (subject_expression) {
        single_conditional_expression => return_expression,
        conditional_expression1, conditional_expression2 => return_expression,
    };
    
    
    $expressionResult = match ($condition) {
        1, 2 => foo(),//当$condition值为1或2时,执行foo(),并返回结果
        3, 4 => bar(),
        default => baz(),//不满足以下条件1,2,3,4时,默认执行default条件
    };
    
    
    $age = 23;
    
    $result = match (true) {
        $age >= 65 => 'senior',
        $age >= 25 => 'adult',
        $age >= 18 => 'young adult',
        default => 'kid',
    };
    
    //string(11) "young adult"
    
  • declare

    declare 结构用来设定一段代码的执行指令。目前仅支持两个指令:ticks及encoding

Tick(时钟周期)是一个在 declare 代码段中解释器每执行 N 条可计时的低级语句就会发生的事件。N 的值是在 declare 中的 directive 部分用 ticks=N 来指定的。

注意:是ticks条可计时的低级语句。不是所有语句都可计时。通常条件表达式和参数表达式都不可计时。

从register_tick_function('tick_handler')设定起开始算1条。

```php
declare(ticks=1);
//declare(ticks=4);

// A function called on each tick event
function tick_handler()
{
    echo "tick_handler() called\n";
}

register_tick_function('tick_handler');

$a = 1;

if ($a > 0) {
    $a += 2;
    print($a);
}


declare(encoding='ISO-8859-1');

```
  • return

    return看似很简单,但就是因为简单,而导致有一些混乱,专业的phper需要搞清楚return的本质:

    return是一个语言结构,默认返回值而不是返回变量,如果需要返回变量,需要通过引用。参考函数/方法引用传参,或函数返回一个引用的语法,参见函数章节的返回值。

    return后面的参数不需要的用括号,也不应该用,可以减轻php的负担。

    • 如果在全局范围中调用,则当前脚本文件中止运行。
    • 如果当前脚本文件是被 include 的或者 require 的,则控制交回调用文件。
    • 如果当前脚本是被 include 的,则 return 的值会被当作 include 调用的返回值。
    • 如果在主脚本文件中调用 return,则脚本中止运行。
    • 如果当前脚本文件是在 php.ini 中的配置选项 auto_prepend_file 或者 auto_append_file 所指定的,则此脚本文件中止运行。
    • return并不终止后续函数、类、方法的定义,也就是说在return之前可以调用在return代码之后的函数方法块。
  • require与include

    require 和 include 几乎完全一样,除了处理失败的方式不同之外。require 在出错时产生 E_COMPILE_ERROR 级别的错误。

    换句话说将导致脚本中止而 include 只产生警告(E_WARNING),脚本会继续运行。

    include_once 语句在脚本执行期间包含并运行指定文件。与 include 语句类似,唯一区别是如果该文件已经被包含过,则不会再次包含,只会包含一次。同require_once;

  • goto

    在学c语言时,都会被告知不提倡使用goto操作符。

    PHP 中的 goto 有一定限制,目标位置只能位于同一个文件和作用域,也就是说无法跳出一个函数或类方法,也无法跳入到另一个函数。也无法跳入到任何循环或者 switch 结构中。可以跳出循环或者 switch,通常的用法是用 goto 代替多层的 break。

    在php中,我们建议使用场景:

    • 从多重循环中直接跳出 ;
    • 出错时清除资源;
    • 可增加程序的清晰度的情况;

    建议:小范围内使用,不要神出鬼没。还是可以使用的,特别是在模块化做的比较好的项目中。

来源:PHP基础参考02-基础语法参考1 - 9ong

PHP基础参考03-基础语法参考2 - 9ong

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
禁止转载,如需转载请通过简信或评论联系作者。
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,163评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,301评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,089评论 0 352
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,093评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,110评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,079评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,005评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,840评论 0 273
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,278评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,497评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,667评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,394评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,980评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,628评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,796评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,649评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,548评论 2 352

推荐阅读更多精彩内容

  • PHP简介 PHP超文本预处理器。是嵌入HTML文件中的服务器端脚本程序。换句话说PHP只能运行在服务器上。一个H...
    8d2855a6c5d0阅读 560评论 1 0
  • PHP(一)基础语法 本来就是学习笔记,就不说废话了 参考 PHP 手册陈惠贞 , 陈俊荣.PHP 7&MySQL...
    cndaqiang阅读 1,090评论 1 1
  • PHP简介 PHP(外文名:PHP: Hypertext Preprocessor,中文名:超文本预处理器,是一种...
    likeli阅读 425评论 1 2
  • 1.字符串 (1).双引号解析变量,单引号不解析变量; (2).字符串内的变量后面要接上特殊字符,例如空格等分开,...
    大肥豹阅读 149评论 0 0
  • 1.显示echo 是在PHP里面最常用的一个输出、显示功能的命令,print 2.注释// 表示单行注释/*多行注...
    简6yao阅读 1,316评论 0 1