有道笔记文档链接:php学习笔记-基础篇.md
链接:http://note.youdao.com/noteshare?id=e156cbd10c0106ad4b4995efcb5ba66f
1-1. PHP基本语法
一、解析符
- 只有单独的php语法时 使用<?php 或者<?php ?>
- 在写html引入的时候必须使用<?php ?>. 否则报错
- 也有其他短解析符写法 <% %> <? ?> 通过配置php的配置文件打开short_tag=on,一般用的都是
<?php ?> <?php, 其他了解一下即可
在纯php脚本中使用.可以只有开始<?php
<?phpecho "hello world"
二、输出语句
- print是一个语法结果,所有不必带括号传入参数。作用是: 用于输出字符串,或者能被转为字符串的数据(类型转换 见数据类型章节)
```
语法结构和方法没有区别
print ‘hello’换行用
换行符换行输出的标签将被浏览器解析,本质上html页面和json数据对后台来说都是遗传字符串而已
print ‘
‘
方法形式
print(‘你非要括号也行’)
输出一个数组 将会抛出警告
print([1,2,3]) # 错误方式
非要输出数组,使用print_r
print_r([1,2,3])
print_r还能输出对象和资源类型
资源类型 resource 是一种特殊变量, 保存了到外部资源的一个引用。例如 打开文件、数据库连接、图形画布区域等等
- echo 的功能以及用法和print是一样的,唯一的区别就是echo能输出多个参数,且echo的解析会比print快
echo ‘
=== ehco ===
‘;
语法结构输出,一般都是用语法结构输出的
echo ‘hello world’, ‘emmm’, ‘
‘;
方法输出,只能接受一个参数 划重点
echo(‘hello world’);
多个参数会抛出异常 Parse error
echo(‘hello world’, ‘
‘); # 错误写法
- var_dump 能输出所有的数据类型 数据信息, 常用于调试 十分常用
var_dump([1,2,3,4]);
二维数组
var_dump([[1,2,3,4,5],[‘name’=>’php’, ‘des’=>’4个月左右’]]);
<a name="ePxxa"></a>### 三、注释- // 单行注释- *单行注释 同上,但比较少用- /* 多行注释 */ ctrl+shift+?- /** 块注释 */ 用于对文件,方法,数据结构和算法的描述
函数功能描述的注释
/**
- @Author dream;
- @Return array;
*/
php函数不区分大小写
php的变量必须区分大小写
function Mysql(){
return [1,2,3,4] } mysql() ```
1-2. 常量与变量
一、变量
在php中变量也是有类型的,如 全局 | 局部 | 静态 |动态 变量类型不是指数据类型!!!
1-1 变量的定义
- 变量的定义统一使用 $ 美元符定义
- php是一门弱类型的脚本语言,所以不像C语言一般,定义变量时不需要规定其数据类型
- 在脚本运行中亦是可以动态改变其数据类型的
变量定义没有指定初始值,其值默认为null,直接输出会抛出Notice警告,但不影响代码执行
$a = 'hello world';echo $a; // 输出变量a 的值$a = 'hello'; // 这里需要知道 重复定义就会覆盖$a; // 没有使用 = 号赋值,默认值为null
1-2 函数的引用
使用global 在函数中引入全局变量
使用 $GLOBALS 获取全局变量global $a //使用global 在函数中引入全局变量var_dump($GLOBALS.$a) // 使用 $GLOBALS 获取全局变量function fun(){static $a = 1 // 通过 static 将函数内部有生命周期的变量 变为 静态变量}
二、常量
1-1 常量定义
常量一般都是大写 使用define定义 const
define('A', 124545);const ADD_CART_NUM = 1245echo A;
1-2 常量不存在再去定义
defined('A') || define('A',545454);
三、数据类型
共8种数据类型
boolean
- integer
- float
- string
- array
- object
-
1-1 数据类型转换
在要转换的变量之前加上用括号括起来的目标类型
$num1 = 3.14;$num2 = (int)$num1;var_dump($num1); //输出float(3.14)var_dump($num2); //输出int(3)
使用3个具体类型的转换函数,intval()、floatval()、strval()
$str = "123.9abc";$int = intval($str); //转换后数值:123$float = floatval($str); //转换后数值:123.9$str = strval($float); //转换后字符串:"123.9"
settype进行数据类型转换
$num4=12.8;$flg=settype($num4,"int");var_dump($flg); //输出bool(true)var_dump($num4); //输出int(12)
判断字符串全部由数字组成
$str = '123';if(ereg('^[0-9]+$', $str)){// true}
四、数组相关
创建数组
$arr = array(1,2,3);$arr = [1,2,3]
接受一个数组每次+2
$arr = range(1,10,2) //输出 [1,3,5,7,9]
修改一个数组
$arr = range(1,10);$arr[count($arr)-1] = '数组的最后一项';var_dump($arr);
数组自增 不用初始化
$arr2[] = '呵呵';$arr2[] = '哈哈';vaar_dump($arr2);
关联数组
$arr7 = ["name" => 'php','age' => int 24]
将数组转换为json字符串
json_encode($arr)
数组循环
// 可以遍历任何类型的数组$arr2 = ['xiaohong' => '6','xiaolan' => '5',];foreach ($arr2 as $key => $value) {echo '<br/>'.$key.':'.$value;}// 索引数组循环$arr4 = [1,2,3,4,5];$len = count($arr4);for ($i= 0; $i < $len; $i++){echo '<li>', $arr4[$i], '</li>';}
1.1 数组方法
current(数组) 当前指针指向的数组元素
current($arr);
next(数组) 返回数组的下一个元素 依次叠加
next($arr);
prev(数组) 返回数组的下一个元素 依次叠加
prev($arr);
reset(数组) 指向数组第一个并返回
reset($arr);
array_shift(数组)将数组第一个元素移除数组并返回
$arr = [154,12154,56,784,45,145,'f','D','s'];array_shift($arr)
在数组开头添加元素
array_unshift($arr, 'first')
移除数组最后一位
array_pop($arr)
添加到数组最后一位
arr_push($arr,'被push的值')
判断数组中是否存在某个键值
arr_key_exists('join_key',$arr) // 输出false
判断数组中是否存在某个值
in_array('a',$arr)
将数组转换成字符串
implode($arr, ',')
sort(数组)将数组的值从小到大排序
sort($arr); // 会将关联数组改为索引数组
从下标为0开始取,取3个
array_slice($arr,0,3) // 默认数组长度
从数组末尾取2个
array_slice($arr,-2)
array_map(‘值’,$arr)生成一个新的数组,不会修改原数组
- 过滤数组 array_filter($arr); // 默认过滤空值
每次从数组中随机取出元素
array_rand($arr);
数组去重
array_unique($arr);
五、字符串
$str = 'php'echo "想成为全栈开发工程师,就来学习{str}吧!!!"
定位符
<<<EOFclass="container" id='box' $nameEOF;
去除空格
ltrim($str); // 去除左边空格rtrim($str); // 去除右边空格trim($str); // 去除两端空格
获取字符串长度
strlen($str) // 获取字节长度mb_strlen($str) // 获取字符串长度
字符串截取
$str = 'hello world';mb_substr($str,1)
字符串替换
substr_replace($str,'h',0,3)
六、函数与代码重用
include require 文件载入
include_once(“../index.php”)
require_once("../index.php") //如果已经引入则自动忽略
获取当前文件路径
__DIR__;
获取系统分隔符
__DIR__.DIRECTORY_SEPARATOR.'index.php'
1.1 函数的调用
定义函数
function foo(){return '你好'; // 不return的话会返回NULL}
检测函数是否被定义
funtion_exists('foo'); // 返回true或false
// 排查错误 调试方式
exit();
变量是否存在
isset($a);
变量的值是否为空
empty($a)
在形参前添加&符号为引用
$data = ['age'=>'18'];function arr ($key,$val,&$data){$data[$key] = $val;var_dump($data);};arr('name','郁白',$data);var_dump($data);
匿名函数 ``` $fun = function (){
}
- use 关键字引入全局变量 $fun = function($key,$val) use (&$data){ $data[$key] = $val; } $fun('abc','555')<a name="R9MHE"></a>#### 1.2.时间日期- [momentjs.cn](http://momentjs.cn) js时间日期格式化插件- time时间戳
$itme = time()
- date() 格式化时间
date(‘Y-m-d h:i:s’, $t)
- date_default_timezone_set('PRC') 设置时区- date_default_timezone_get(); 获取时区- format字符串时间格式化- getdate() 以数组的形式获取时间
getdate()
- 根据参数返回规定的时间戳
mktime(14,0,0,2,4,2020,is_dst) // mktime(时,分,秒,月,日,年,是否为夏令时已被废弃)
- 时间对比
strtotime(“2019-02-01”) // 时间转化为时间戳 time() - strtotime(“-1hour”) // 获取前1小时的时间 3600秒 time() - strtotime(“-1hour-30minuter”) //获取一个半小时以前 strtotime(“1day”); // 获取明天的时间 ```
