【数组】
【数组的定义】
定义:就是一组数据的集合
元素
键 => 值 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);
返回你的微秒数