PHP3 使用数组及错误处理

【数组】

【数组的定义】

        定义:就是一组数据的集合

        元素
            键 => 值                     1=>'你好', 2=> '我很好'

        键:就是数组的下标
            键不能重复
        值:就是你键对应的东西
            值可以重复

【数组的声明】

    1/$array = array(1,2,3,4,5,6,7,8,9); //5.4版本以前的声明方式
    2/$arr = [1,2,3,4,5,6,7,8];
    3/
        $arr[] = 'a';
        $arr[] = 'b';
        $arr[] = 'c';

    注意:你在数组里面写键或者值如果是字符串都要给我引起来3

【数组的分类】

    定义给数组的时候最后一个逗号可以加可以不加 随意

    【索引数组】

        下标就是数字开始的
        $arr = [
            '好好学习',
            'day day up',
            'keepmoving',
            'anything is possible',
            'just do it',
            '非一般的感觉',
            '辣条',
            'to be NO1',
            '我疯了'
        ];


        可不可以
            增加元素
                $arr[] = '苏菲非一般的感觉';

                注意:如果你要添加数据,它是按照你的最大的那个下标去累加的

            删除元素

                unset();

            修改元素
                $arr[5] = '日用版也用版 白加黑';
                修改的时候是你下标跟你要修改的那个数组元素的下标一直

            获取元素
                $arr[下标];


        【关联数组】

            $arr = [
                '你好' => '肾宝',
                '卫龙' => '辣条子',
                '晓东' => '他不是迟到',
                '老师' => '老胡',
                '演员' => '马刺教练',
            ];

            获取元素
                echo $arr['演员'];

            添加元素
                $arr['苍苍'] = '空空';

                var_dump($arr);
            若果你的下标都是字符串的话,你用【】添加元素的话,下标从零开始计数

            删除元素
                unset($arr[你要删除的下标]);

                unset($arr['卫龙']);

        【二维数组】关联和索引混合的

        $arr = [
            '大力出去奇迹',
            '我不败家,对不起我爸妈的才华',
            '一天我少花500我浑身难受',
            '一动不动是王八' => [
                'a' => 'b',
                '一百块都不给我',
                '六块钱麻辣烫并且还是坐飞机去的',
                '我心里想,就是sb'
            ],
            '万万没想到,他是存钱,不是取钱点',
        ];

        var_dump($arr);
        echo $arr['一动不动是王八'][1]; //六块钱麻辣烫并且还是坐飞机去的

        【三维数组】


        【多维数组】

            $arr = [
                '大力出去奇迹',
                '我不败家,对不起我爸妈的才华',
                '一天我少花500我浑身难受',
                '一动不动是王八' => [
                    'a' => 'b',
                    '一百块都不给我',
                    '六块钱麻辣烫并且还是坐飞机去的',
                    '我心里想,就是爽' => [
                        'PHP' => [
                            '好吧' => [
                                'html' => [
                                    1,2,3,4,5,6,7,8
                                ],
                                'php'  => '二',
                                'mysql' => '是',
                                'js' => [
                                    'dom' => 'dd',
                                    'bom' => [
                                        'a' => 'b'
                                    ]
                                ]
                            ]
                        ]
                    ]
                ],
                '万万没想到,他是存钱,不是取钱点',
            ];

            //var_dump($arr);

            //echo $arr[2][2][0][0][3][1][0];

            echo $arr['一动不动是王八']['我心里想,就是爽']['PHP']['XXX']['html'][6];  //7

    【数组遍历】 count


        【count】 算出来你数组的元素的总个数

        求数组元素的和
            $sum = 0;

            $cishu = count($arr);

            for ($i = 0; $i < $cishu; $i++) {

                $sum += $arr[$i];

            }

            echo $sum;

            注意:用for 必须是索引数组,下标必须是连着的

        【重点】
            foreach ($arr as $key => $value) {

            }

            //$key  就是你数组的下标
            //$value 就是你数组的值


            foreach ($arr as $value) {
                echo $value.'<br />';
            }
            //就是你的$key 可以省略不写 只写一个$value 就是值

        【list】
            它只适用于索引数组
            $arr = ['a','b','c','d','e'];
            list($val1,$val2,$val3) = $arr;

            list($val1,$val2,$val3) = $arr;

            'a'给了val1 。。。。。。

            list(,,,$val) = $arr;

        【each】
            $arr = array(
        '红薯' => '打底裤',
        '番茄' => '鸡蛋',
        '拉面' => '兰州',
        '皮蛋' => '豆腐'
        ); //[]


        //var_dump(each($arr));

        /*
         1 => string '打底裤' (length=9)
          'value' => string '打底裤' (length=9)
          0 => string '红薯' (length=6)
          'key' => string '红薯' (length=6)

         while list each 配合来使用的
         多写写好吧

【重点】

        【超全局数组】


        $_GET  $_POST $_REQUEST  $_SERVER $_SESSION $_COOKIE

        关于GET method=“get/post”

        【$_GET 】如果你的form表单里面不写提交方式,默认是get 通过url传过去的

        如果你想用post方式去传参,你必须指定post方式 

        你用get方式提交你必须用get接受


        【$_POST】你用post方式提交你必须用post接受 $_POST['username']


        【$_REQUEST】 可以接受post提交过来的还能接受get提交过来的

        建议:你用什么方式提交,你就用什么方式接受

        【$_SERVER】
            $_SERVER['REMOTE_ADDR']; //获取ip地址

            $_SERVER['HTTP_REFERER']; 上级来源页

【错误处理】

    错误分类
        语法错误
        运行错误
        逻辑错误
    错误分级

    【错误处理】 @

        只能屏蔽notice warning 不能屏蔽Fatal error(致命错误)

    全部错误都不显示
        在配置文件php.ini里面吧display_errors = on 改成display_errors = off 切记
重启服务器
        但是我们在开发的过程当中 让所有错误要显示 上线的时候可以关闭错误
        1、通过display_errors = On

        2、通过ini_set();

        ini_set('display_errors',0); //不显示报错信息
        ini_set('display_errors',1);  //显示

   区别:ini_set只对你当前文件有效而如果你在php.ini里面修改的话 对你所有文件有效


        ini_get获取php一些配置信息 显示出来你的配置文件php.ini里面的关于错误的配

        error_reporting();  0是不报错 -1是报错所有的错误信息

    它不作为是重点,但是你要知道,你要配置一些信息知道在什么地方 算了 记住吧


    错误日志

        把php.ini 里面的log_errors 开启
        如果你想配置你的错误文件的路径
        error_log ="C:/wamp64/logs/php_error.log"
【自定义错误 语法形式】
trigger_error(“ 错误提示信息内容 ”,  3 中用户错误代号之一);
其中触发了用户的致命错误(E_USER_ERROR),也会终止程序的后续执行。

显示哪些级别的错误报告(error_reporting):

显然,前提是“display_errors”设置为On(或1),表示可以显示。
显示哪些级别的错误报告,也有2个做法:
做法1:在php.ini文件中;
这个值目前代表“所有错误”,都显示。
修改为:
此时就只显示 E_NOTICE 级别的错误
更多示例为:
error_reporting = E_NOTICE | E_WARING | E_ERROR           // 显示该3种;
error_reporting = E_ERROR | E_USER_ERROR                       // 显示该2种严重错误
要想代表真正的“所有错误”,应该写为:E_ERROR | E_STRICT,图示如下:
做法2:在当前的脚本代码中:
跟php.ini中设置其实是一样,举一些例子如下:
ini_set(“error_reporting”,  E_NOTICE);       // 就显示该一个级别的错误
ini_set(“error_reporting”,  E_NOTICE | E_WARNING),     // 显示2个级别
ini_set(“error_reporting”,  E_NOTICE | E_WARNING | E_ERROR), // 显示3个级别
ini_set(“error_reporting”,  E_ALL | E_STRICT), // 这才代表显示所有错误!

错误日志的记录问题

错误日志其实就是错误报告,只是它会“写入文件中”,此时就称为错误日志!
也有2个问题,每个问题也有2种做法:

是否记录log_errors:

php.ini 中:
log_errors = On    或 Off
脚本中:
ini_set(“log_erros”,  1);   或 0
补充一句:
1 :ini_set(“php配置项”, 值);        // 用于脚本中设置php.ini中是某项的值。
2, :$v1 = ini_get(“php配置项”);     // 用于获取php.ini中是某项的值

记录到哪里error_log:

一般就只有2个写法:
写法1:直接使用一个文件名,此时系统会自动在每个文件夹下都建立该文件名,并用其记录该文件夹下的所有网页文件发生的错误信息。
然后执行一个有错误的网页,并可以观察到:
其中的内容大约为:
写法2:使用一个特殊的名字“syslog”,则此时所有错误信息都会记录到系统的“日志文件”中。
系统日志文件在这里:控制面板》管理工具》事件查看器》window日志》应用程序:
然后执行一个有错误的网页,并可以观察到:

自定义错误处理器

什么叫错误处理器?
就是一旦发生错误,用来处理该错误的一种“机器”——其实就是一个函数。
自定义错误处理,就是指:
让系统不要去处理错误了,而完全由我们(开发者)来对错误进行处理:显示和记录。
          echo $errno.'<br />'; //错误级别
          echo $errstr.'<br />'; //错误信息
做法,其实非常简单,就2步:
第一步:
设定要用于处理错误的函数名!
set_error_handler(“f1”);
第二步:
去定义该函数!
function f1(){
// 这里可以任意写代码:自然正常是去显示错误报告,和记录错误日志。
}

    【日期函数】

        用途:
            修改时间
            注册时间
            删除时间
            发帖时间
            回帖时间
            登录时间
            退出时间

        Unix时间戳
            从1970年1月1日零时零分零秒开始的

            time — 返回当前的 Unix 时间戳

            date('Y-m-d H:i:s');  //2016-12-15 05:12:41

            //设置时区

            通过php.ini 里面修改date.timezone ="UTC"  =》 date.timezone
="PRC"

            通过函数 date_default_timezone_set(); 里面写你要设置的时区  (查手
册)


        【mktime】
            mktime(13,23,20,12,15,2016); 返回你手动设置的时间
            返回的是时间戳

        【checkdate】
            checkdate(12,15,32767); 检测你设置的日期是是否满足手册里面给我的
范围 不符合返回false 符合返回true
            month
            month 的值是从 1 到 12。
            day
            Day 的值在给定的 month 所应该具有的天数范围之内,闰年已经考虑进去
了。
            year
            year 的值是从 1 到 32767。

        【getdate】
                返回一个数组 里面包括 秒 时 分 。。。。。。
            它里面还可以传入时间戳,是一个死值
        【strtotime】
            里面可以传now引起来 返回时间戳
            //还可以传入英文
            10 September 2000
            strtotime('2016-12-15 13:37:10');

        date_parse("2006-12-12 10:00:00.5"));
            C:\wamp64\www\1606\13\time.php:26:
            array (size=12)
              'year' => int 2006
              'month' => int 12
              'day' => int 12
              'hour' => int 13
              'minute' => int 40
              'second' => int 10
              'fraction' => float 0.5
              'warning_count' => int 0
              'warnings' =>
                array (size=0)
                  empty
              'error_count' => int 0
              'errors' =>
                array (size=0)
                  empty
              'is_localtime' => boolean false
        【microtime】
            microtime(true);
            返回你的微秒数
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值