PHP头条
热点:

[PHP]PHP基础,


[PHP]PHP基础

内容包括:文件引用、输出、常量、系统常量、变量、单双引号的区别、数据类型、数据类型转换、运算符、流程控制、循环语句、函数、常用函数、日期函数、数组和错误处理。

<?php
    // “<?php” 表示php的开始,“? >”表示php的结束,若开始标识后全是php代码可以不使用结束标识
    /**
     * 文件引用
     *      include ('need.php');
     *          报错后弹出警告后,仍会继续执行后续代码。
     *          include包含一个文件多次会报错,使用include_once('need.php')多次引用就不会报错。
     *      require ('need.php');
     *          报错后后续代码不会继续执行。
     *          require包含一个文件多次会报错,使用require_once('need.php')多次引用就不会报错。
     */

    /**
     * 输出: echo
     * 换行:<br/>
     */
    echo "hello world ! <br/>";
    echo 'hello world !!<br/>';
   
    /**
     * 常量 
     * define($name, $value)
     * $name一般用大小字母,能一眼辨别出它是常量;$value必须是标量
     * 不能重新定义相同的name
     * defined()  判断常量是否被定义
     */
    define("PNUM", "64");
    echo PNUM; // 输出:64
    
    /** 
     * 系统常量 
     */
    // __FILE__     获取出当前文件名
    echo __FILE__;         // 输出:/Applications/XAMPP/xamppfiles/htdocs/MyService/newfile.php
    // __LINE__     代码在第几行
    echo __LINE__;         // 输出:24
    // M_PI         获取圆周率
    echo M_PI;             // 输出:3.1415926535898
    // PHP_OS       获取系统信息
    echo PHP_OS;           // 输出:Darwin
    // PHP_VERSION  获取PHP的版本
    echo PHP_VERSION;      // 输出:7.2.2
    // __DIR__      获取当前文件所在文件件的路径
    echo __DIR__;          // 输出:/Applications/XAMPP/xamppfiles/htdocs/MyService
    // __FUNCTION__ 获取函数名
    function demoAciton () {
        echo __FUNCTION__; // 输出:demoAciton
    }
    demoAciton();
    // __MHTHOD__   获取当前成员方法名
    // __NAMESPACE__获取当前命名空间名字
    // __TRAIT__    获取当前TRAIT名字(多继承)
    // __CLASS__    获取当前类名
    
    /**
     * 变量 
     * 命名规范:
     *      必须以$开始,后面以下划线和英文字母开始;
     *      严格区分变量名的大小写;
     *      变量名要创建得有意义;
     *      遵循驼峰命名法,例如:myCreateObject;
     */
    $i = 0;
    for ( ; $i < 10 ; $i++) {
        echo "$i";
        echo "<br/>";
    }
    // unset() 销毁变量
    unset($i);
    // 或者赋null
    $i = null; 
    // isset() 判断一个变量是否有内容
    if (isset($i)) {
        echo "\$i有内容";   // 输出:$i有内容
    } else {
        echo "\$i没有内容"; // 输出:$i没有内容
    }
    
    /**
     * 单引号与双引号的区别
     *      单引号不能解析变量,双引号能解析变量;
     *      双引号中的变量明后紧跟其它字符时,需要将之用{}包起来;
     * 连接字符串用点号"."
     * 转义字符:\"  \'  \$
     */
    $name = "小姐姐";
    echo '<br/>'.'这里有$name'; // 输出:这里有$name
    echo "<br/>"."这里有$name"; // 输出:这里有小姐姐
    echo "<br/>$name真漂亮";    // 输出警告:Undefined variable: name真漂亮
    echo "<br/>{$name}真漂亮";  // 输出:小姐姐真漂亮
    echo "<br/>'$name'真漂亮";  // 输出:'小姐姐'真漂亮
    echo "\"\$".'\'';          // 输出:" $ '
    
    /**
     * 数据类型
     *      [标量]
     *          整型      10   
     *          浮点型    10.5      
     *          布尔型    true  false
     *          字符串    用单双引号包起来的都是字符串
     *      [混合类型]
     *          数组      array   
     *          对象      object
     *      [特殊类型]
     *          空        null
     *          资源      resource
     */
    $x = 10;
    $y = 10.5;
    $z = ture;
    $str = "x10y";
    // echo无法打印数组,智能输出输出其中某个元素
    // print_r能打印数组,输出索引及元素
    // var_dump能打印数组,输出索引、元素和各元素的类型
    $tempArr = [1,2,"a",'b'];
    echo "$tempArr[2]"; // 输出:a
    print_r($tempArr);  // 输出:Array ( [0] => 1 [1] => 2 [2] => a [3] => b )
    var_dump($tempArr); // 输出:array(4) { [0]=> int(1) [1]=> int(2) [2]=> string(1) "a" [3]=> string(1) "b" }

    /**
     * 数据类型转换
     * gettype() 获取变量数据类型   
     * intval()  转换为整型         
     * floatval()转换为浮动型         
     * strval()  转换为字符串
     * boolval() 转换为布尔类型
     * 
     * is_int()     判断整型
     * is_float()   判断浮点型
     * is_string()  判断字符串
     * is_bool()    判断布尔类型
     * is_array()   判断数组
     * is_object()  判断对象
     * is_resource()判断资源
     * is_null()    判断空
     * is_numeric() 判断是否为数字或数字字符串 
     */
    echo gettype($str);            // 输出:string
    echo gettype(intval($str));    // 输出:integer
    echo gettype(floatval($str));  // 输出:double
    echo gettype(strval($y));      // 输出:string
    echo gettype(boolval($str));   // 输出:boolean
    echo "<br/>";
    $null = null;
    echo intval($null);           // 输出:0
    echo floatval($null);         // 输出:0
    echo strval($null);           // 输出:空的字符串
    
    /**
     * 运算符
     * 算数运算符:
     *      +   加
     *      -   减
     *      *   乘
     *      /   除
     *      %   求余
     * 一元运算符:
     *      ++  自增
     *      --  自减
     * 三元运算符:
     *      ?: 条件?真:假       
     * 比较运算符:
     *      >   大于   
     *      >=  大于等于
     *      <   小于
     *      <=  小于等于
     *      ==  等于      '10' == 10  为真
     *      === 绝对相等   '10' === 10 为假
     *      !=  不等于
     *      !== 不绝对等于
     * 赋值运算符:
     *      =
     *      +=  x+=y相当于x=x+y
     *      -=  x-=y相当于x=x-y
     *      *=  x*=y相当于x=x*y
     *      /=  x/=y相当于x=x/y
     *      %=  x%=y相当于x=x%y
     *      .=  x.=y相当于x=x.y    字符串拼接
     * 逻辑运算符:
     *      &&  与
     *      ||  或
     *      !  非
     */
    
    /**
     * 流程控制
     *      单分支结构
     *          if (条件) {
     *          }
     *      多分支结构
     *          if (条件) {
     *          } else if (条件1) {
     *          } else {
     *          }
     */
    echo "<br/>";
    // 单分支结构
    $judge = 0;
    $judge1 = 0.00;
    $judge2 = "";
    $judge3 = "0";
    $judge4 = "0.00"; // 为真
    $judgeArr = [];
    $judgeNull = null;
    if ($judge  || $judge1 || $judge2 || $judge3 || $judgeArr || $judgeNull) {
        echo "条件成立";
    }
    // 多分支结构
    $tempCondition = 2;
    if ($tempCondition == 1) {
        echo "\$tempCondition == 1";
    } else if ($tempCondition == 2) {
        echo "\$tempCondition == 2";
    } else {
        echo "\$tempCondition == 其它";       
    }
    // 多分支
    $tempCase = 1;
    switch ($tempCase) { // 输出:情况一
        case 1:
            echo "情况一";
            break;
        case 2:
            echo "情况二";
            break;
        default:
            echo "没满足的情况";
            break;
    }
    switch ($tempCase) { // 输出:情况三
        case 1:
        case 2:
        case 3:
            echo "情况三";
            break;
        default:
            echo "没满足的情况";
            break;
    }
    
    /**
     * 循环语句
     * for循环:知道循环多少次时使用
     *      for ($i = 0 ; $i < 10 ; $i ++) {
     *      }
     * while循环:不知道循环多少次时使用
     *      $i = 0;
     *      while ($i < 10) {
     *          $i ++;
     *      }
     * do...while循环:
     *      $i = 0;
     *      do {
     *          $i ++;
     *      } while ($i < 10);
     * break:
     *      终止循环
     * continue:
     *      中断当次循环,继续进行下一次循环,直到循环结束。
     */
    for ($i = 0 ; $i < 10 ; $i ++) {
        echo $i;  // 输出:0123456789
    }
    $wi = 0;
    while ($wi < 10) {
        echo $wi; // 输出:0123456789
        $wi ++;
    }
    do {
        echo $wi; // 输出:10987654321
        $wi --;
    } while ($wi > 0);
    
    /**
     * 九九乘法表
     */
    echo '<table width="800" height="200" border="1"';
        for ($i = 0 ; $i <= 9 ; $i ++) {
            echo '<tr>';
                for ($j = 1 ; $j <= $i ; $j ++) {
                    echo '<td>';
                    $num = $i * $j;
                    echo "$i*$j=$num";
                    echo '</td>';
                }
            echo '</tr>';
        }
    echo '</table>';
    
    /**
     * 函数
     * 函数定义:
     *      function testAction ($sender) {
     *          // 函数体
     *          $content = $sender + 1;
     *          return $content;
     *      }
     * 命名规范:
     *      函数名不区分大小写;
     *      命名需要有意义;
     *      函数名必须以字母或下划线开头;
     *      遵循驼峰命名法;
     *      不能使用系统定义过的函数名;
     * 超全局变量:
     *      在函数内外都能使用
     *      $_GET    
     *      $_POST
     *      $_COOKIE
     *      $_FILE
     *      $_SESSION
     *      $_GLOBALS
     * 外部变量:
     *      在函数外声明的变量,只能在函数外部使用。
     *      $i = "外部变量";
     *      function demoAction () {
     *      }
     * 局部变量:
     *      在函数内声明的变量,只能在函数内部使用。
     *      function demoAction () {
     *          $tempStr = "局部变量";
     *      }
     * 静态变量:
     *      function demoAction () {
     *          static $num = 0; // 会保留上一次调用函数时初始化的值
     *          $num += 1;
     *      }
     *      demoAction();
     *      demoAciton();
     * 限制形参数据类型/限制返回值数据类型
     *      function demoAction(int $x, int $y):string {
     *          $num = $x + $y;
     *          return $num;
     *      }
     *      demoAction("1", "5")
     * 匿名函数:
     *      $test = function () {
     *      }
     *      $test();
     */
    // 无参数无返回值
    function fTestAction () {
        
    }
    fTestAction();
    // 有参数无返回值
    function fTestAction1 ($name) {
    }
    fTestAction1("张三");
    // 有参数有返回值
    $tempName = "张三";   // 全局变量
    function fTestAction2 ($name) {
        return $name."是单身狗";
    }
    $tempResult = fTestAction2($tempName);
    echo $tempResult; // 输出:张三是单身狗
    // 形参限制类型/限制返回值类型
    function fTestAction3(int $x, int $y):string {
        $num = $x + $y;
        return $num;
    }
    var_dump (fTestAction3("1", "5")); // 输出:string(1) "6"
    // PHP7新特性,语法规定
    function  fTestAction4(...$Array) {
        return $Array;
    }
    var_dump(fTestAction4(1,2,'a',3,"A",4)); // 输出:array(6) { [0]=> int(1) [1]=> int(2) [2]=> string(1) "a" [3]=> int(3) [4]=> string(1) "A" [5]=> int(4) }
    $testArr = [1,"a",2];
    echo "<br/>";
    var_dump(fTestAction4($testArr)); // 输出:array(1) { [0]=> array(3) { [0]=> int(1) [1]=> string(1) "a" [2]=> int(2) } }
    
    /**
     * 常用函数
     * 字符串函数:
            strlen:        获取字符串长度,字节长度
            substr_count:   某字符串出现的次数
            substr:        字符串截取,获取字符串(按照字节进行截取)
            mb_strlen:     获取字符串的长度
            mb_substr:     获取部分字符串
            strchr:        与substr相似,从指定位置截取一直到最后
            strrchr:       获取文件后缀名,与strchr一样,只是从右边开始查找字符
            strtolower:    所有的字符都小写(针对英文字母)
            strtoupper:    所有的字符都大写
            strrev:        字符串反转(只能反转英文:英文存储只有一个字节),按照字节进行反转
            strpos:        从字符串中找对应字符出现的位置(数字下标),从最左边开始找
            strrpos:       与strpos一样,只是从字符串的右边开始找
            trim:          去掉函数两边的字符,默认是空格
            str_split:      函数把字符串分割到数组中。
            chunk_split:    函数把字符串分割为一连串更小的部分
            str_repeat:     把字符串"string"重复多次
            str_replace:    替换
            ucfirst:       首字母大写
     * 时间日期函数:
            time:           得到当前时间的时间戳(整型:从格林威治时间1970年1月1日0时0分0秒开始)秒数
            date:           时间序列化函数,将指定的时间戳转换成规定时间日期的显示格式(随意的字符串:有专业的格式符规定),如果没有指定时间戳,系统默认使用当前时间的时间戳
            strtotime:      时间日期格式的字符串转换成对应的时间戳(只要是正确的英语时间表达方式,都可以进行转换)
            microtime:      微秒时间戳,根据不同的要求返回不同的结果 混合 microtime (布尔类型 ),可以返回一个浮点数的时间,也可以返回一个数组(时间戳和微秒数)
     * 数学相关函数:
            abs:            绝对值
            floor:          向下取整 floor(3.2) 结果等于3
            ceil:           向上取整
            round:          四舍五入
            rand:           取得一个指定范围内的随机整数
            mt_rand:        取得一个指定范围内的随机整数(效率更高)
            min:             会将非数值的 string 当成 0,但如果这个正是最小的数值则仍然会返回一个字符串。如果多个参数都求值为 0 且是最小值,min() 会返回按字母表顺序最小的字符串,如果其中没有字符串的话,则返回数值的 0;
            max:             会将非数值的字符串当成 0,但如果这个正是最大的数值则仍然会返回一个字符串。如果多个参数都求值为 0 且是最大值,max() 会返回其中数值的 0,如果参数中没有数值的 0,则返回按字母表顺序最大的字符串。对于多个数组,max从左到右比较;如果同时出现数组和非数组参数总把数组作为最大值返回;
     * 数组相关函数:     
            count:          非数组返回1
            key:            获取当前数组当前指针所指向的元素的下标
            current:        获取的当前指针指向元素的数值
            next:           获取下一个元素的值,并且将指针下移
            prev:           获取上一个元素的值,并且将指针上移
            end :           将指针移到数组的最后一个元素,并返回最终指针位置的值
            reset:          将指针移到数组的第一个元素,返回最终指针位置的值
            array_keys:     获取一个数组的所有键名,返回一个索引数组
            array_values:   获取一个数组的所有值,返回一个索引数组
            explode:        爆炸,将一个字符串按照某个指定的规则(通常是特殊字符),将数组分成多个段,每一段都当做一个数组的元素,返回一个索引数组
            split:          类似 explode explode('.', 'abc.txt')等于split('\.','abc.txt')
            implode:        粘合,将一个数组内部的所有元素按照某个指定的规则(特殊字符),将所有的元素拼接成一个字符串
            join:           把数组元素组合为一个字符串
            array_merge:    合并,指的是将两个数组中的元素进行累计。如果后面的数组与前面的数组有下标(键名:关联)相同的,那么后面的元素的值会覆盖前面的;如果是索引的相同下标,会自动的修改下标叠加到前面的数组里。
            array_reverse:  返回反转后的数组
            array_flip:     交换数组中的键和值     
     * 数据结构模拟函数:
            array_shift:    从数组的前面弹出元素,得到元素的值
            array_pop:      从数组的后面弹出元素,获得元素的值
            array_unshift:  从数组的前面压入元素,得到当前数组元素的个数
            array_push:     从数组的后面压入元素,得到当前数组元素的个数     
     * 判断变量:  
            is_bool:        判断是否是布尔类型
            is_float:       判断浮点型
            is_integer:     判断整型
            is_object:      判断对象
            is_array:       判断数组
            is_string:      判断字符串
            is_resource:    判断资源
            is_scalar:      scalar是标量的,判断是基本数据类型:整型,浮点型,布尔型和字符串型
            is_null:        检测变量是否为NULL 是返回TRUE 否则返回false。1.被赋值为NULL;2.变量没被赋值;3.被unset()
            is_numeric:     判断数字或者纯数字组成的字符串
            gettype:        获得数据类型
            settype:        改变数据类型
            isset:          检测变量是否已设置并且非 NULL
            unset:          如果在函数中 unset() 一个全局变量,则只是局部变量被销毁,而在调用环境中的变量将保持调用 unset() 之前一样的值,如果在函数中 unset() 一个通过引用传递的变量,则只是局部变量被销毁,而在调用环境中的变量将保持调用 unset() 之前一样的值。
            empty:          检查一个变量是否为空 array(),"",0,"0",NULL,FALSE 都返回true     
     * 文件操作函数:
            opendir(路径):       打开一个路径资源(将路径内部的所有数据读入到内存)
            readdir(路径资源):   从文件夹资源中读取当前资源指针所指向的文件的名字,指针会向下移动一位
            closedir(资源):      释放对应的文件资源
            scandir(路径):       读取一个路径内部的所有文件名,返回一个数组,数组的每一个元素都是文件名。
            file_exists:        判断一个文件是否存在(文件是广义:路径和文件)
            is_dir:             判断一个指定路径是否存在(文件夹)
            is_file:            判断一个指定路径是否是文件(文件)
            mkdir:              创建一个路径,如果路径存在就会报错
            rmdir:              移除文件夹
            file_get_contents:  从一个指定的文件内读取数据内容。
            file_put_contents:  将指定的字符串写入到对应的文件
            fopen:              打开一个文件资源
            fgetc:              c代表character,一次读取一个字符,两个函数都是对当前资源指针进行操作,读取之后都会将指针下移
            fgets:              s代表string,代表可以读取多个字符,取决于指定的读取长度或者是否碰到换行(最多只能读取一行数据),两个函数都是对当前资源指针进行操作,读取之后都会将指针下移
            fread:              获取指定长度的数据直到文件结束
            fwrite:             向文件资源指针所在的位置写入数据,写东西不会将当前位置已有的东西往后移,而是会覆盖
            fseek:              将指针指定到对应的位置
            fclose:             使用对应的文件资源
            copy:               复制
            unlink:             删除文件
            rename:             重命名文件
            filemtime:          m代表modify,文件最后被修改的时间
            filesize:           文件大小(字节)
            fileperms:          文件权限(Linux下的八进制)     
     * 排序:
            rsort:          函数用于对数组单元从高到低进行排序。
            asort:          函数用于对数组单元从低到高进行排序并保持索引关系。
            arsort:         函数用于对数组单元从高到低进行排序并保持索引关系。
            ksort:          函数用于对数组单元按照键名从低到高进行排序。
            krsort:         函数用于对数组单元按照键名从高到低进行排序。     
     * 报错:
            error_reporting:设置应该报告何种 PHP 错误
            ini_set:        为一个配置选项设置值
     * 常量:
            define:         定义常量
            defined:        检测常量是否定义
     * 序列化:
            serialize:      产生一个可存储的值的表示 
            unserialize:    从已存储的表示中创建 PHP 的值 
            json_encode:    对变量进行 JSON 编码
            json_decode:    对JSON 格式的字符串进行编码      
     * 编码:
            base64_encode:  使用 MIME base64 对数据进行编码。在 BASE64 编码后的字符串只包含英文字母大小写、阿拉伯数字、加号与反斜线,共 64 个基本字符,不包含其它特殊的字符,因而才取名 BASE64。
            base64_decode:  对使用 MIME base64 编码的数据进行解码
     */
    $ttString = "only is boy !";
    echo strlen($ttString); // 输出:13
    
    /**
     * 日期函数
     * 设置时区:
     *      可以在需要的页面添加代码 date_default_timezone_set('PRC');
     *      也可以去配置文件php.ini中设置:
     *          进入PHP的配置文件php.ini;
     *          搜索"date.timezone";
     *          可以修改date.timezone = "UTC";  // 北京时间这里传"PRC"
     *          重启服务;
     */
    echo '<br/>';
    date_default_timezone_set('PRC');       // 设置时区
    $tempTime = time();                     // time() 得到当前时间的时间戳,单位(秒),与北京时间相差8小时
    echo $tempTime;                         // 输出:1522315231
    echo date('Y-m-d H:i:s', $tempTime);    // 输出:2018-03-29 11:22:46
    echo date('Y-m-d',$tempTime);           // 输出:2018-03-29
    echo date('H:i:s',$tempTime);           // 输出:11:23:52
    
    /**
     * 数组
     * $arr = [1,3,'a'];
     * $arr = array(1,2,'b');
     * 超全局数组 $_GET $_POST $_REQUEST $_SERVER $_SESSION $_COOKIE
     */
    /// 创建数组
    // 索引数组
    $newArray = [1,'a',2,'B'];
    var_dump($newArray);    // 输出:array(4) { [0]=> int(1) [1]=> string(1) "a" [2]=> int(2) [3]=> string(1) "B" }
    $newArray1 = array(1,2,'a');
    var_dump($newArray1);   // 输出:array(3) { [0]=> int(1) [1]=> int(2) [2]=> string(1) "a" }
    $newArray2 = ['3' => 1,'a',2,'B'];
    var_dump($newArray2);   // 输出:array(4) { [3]=> int(1) [4]=> string(1) "a" [5]=> int(2) [6]=> string(1) "B" }
    // 关联数组
    $newArray3 = ['one' => 1,'two' => 'a','three' => 2, 'four' => 'B'];
    var_dump($newArray3);   // 输出:array(4) { ["one"]=> int(1) ["two"]=> string(1) "a" ["three"]=> int(2) ["four"]=> string(1) "B" }
    // 二维数组
    $newArray4 = [
        'one' => [1,2,3],
        'two' => ['a','b','c'],
    ];
    var_dump($newArray4);   // 输出:array(2) { ["one"]=> array(3) { [0]=> int(1) [1]=> int(2) [2]=> int(3) } ["two"]=> array(3) { [0]=> string(1) "a" [1]=> string(1) "b" [2]=> string(1) "c" } }
    
    /// 操作数组
    echo "<br/>";
    // 查找元素
    echo $newArray[1];          // 输出:a
    echo $newArray3['three'];   // 输出:2
    echo $newArray4['two'][1];  // 输出:b
    // 添加元素
    $newArray[4] = "new";
    var_dump($newArray);        // 输出:array(5) { [0]=> int(1) [1]=> string(1) "a" [2]=> int(2) [3]=> string(1) "B" [4]=> string(3) "new" }
    // 删除元素
    unset($newArray[0]);
    var_dump($newArray);        // 输出:array(4) { [1]=> string(1) "a" [2]=> int(2) [3]=> string(1) "B" [4]=> string(3) "new" }
    // 修改元素
    $newArray[1] = "A";
    echo $newArray[1];          // 输出:A
    
    // for循环遍历索引数组,只在联系的索引数组下好使
    for ($i = 0 ; $i < count($newArray1) ; $i ++) {
        echo '<br/>'.$newArray1[$i]; // 输出:1 2 a
    }
    // list遍历数组,只对索引数组有效
    list($v,$n,$m) = $newArray1;
    echo '<br/>'.$v,$n,$m;      // 输出:12a
    // each遍历数组,每次遍历索引往下递增
    var_dump(each($newArray));  // 输出:array(4) { [1]=> int(1) ["value"]=> int(1) [0]=> int(0) ["key"]=> int(0) } 
    var_dump(each($newArray));  // 输出:array(4) { [1]=> string(1) "a" ["value"]=> string(1) "a" [0]=> int(1) ["key"]=> int(1) }
    var_dump(each($newArray));  // 输出:array(4) { [1]=> int(2) ["value"]=> int(2) [0]=> int(2) ["key"]=> int(2) }
    echo '<br/>';
    // while循环用list和each遍历数组
    while (list($key, $value) = each($newArray3)) {
        echo $key.'+++'.$value; // 输出:one+++1two+++athree+++2four+++B
    }
    // foreach遍历关联数组,
    foreach ($newArray3 as $key => $value) {
        echo '<br/>'.$key;      // 输出:one two three four
        echo '<br/>'.$value;    // 输出:1 a 2 B
    }
    foreach ($newArray3 as $value) {
        echo '<br/>'.$value;    // 输出:1 a 2 B
    }    
    
    /**
     * 错误处理
     *      notice
     *      warning     前面两种后续代码还好执行,可以在代码前加@符号屏蔽错误。
     *      Fatal error 致命错误后面代码不会执行,无法屏蔽致命错误。
     *      屏蔽所有错误提示,不让用户看见。
     *          进入PHP的配置文件php.ini;
     *          搜索"display_errors";
     *          将display_errors = On的On改为Off;
     *          最后再重启服务;
     *      将错误写入错误日志中:
     *          进入PHP的配置文件php.ini;
     *          搜索"error_log";
     *          可以修改路径;
     *          重启服务;
     */
    
?>



www.phpzy.comtrue/php/25485.htmlTechArticle[PHP]PHP基础, [PHP]PHP基础 内容包括:文件引用、输出、常量、系统常量、变量、单双引号的区别、数据类型、数据类型转换、运算符、流程控制、循环语句、函数、常用函数、日期函数...

相关文章

    暂无相关文章

PHP之友评论

今天推荐