有道笔记文档链接: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

  1. <?php
  2. echo "hello world"

二、输出语句

  • print是一个语法结果,所有不必带括号传入参数。作用是: 用于输出字符串,或者能被转为字符串的数据(类型转换 见数据类型章节) ```

    语法结构和方法没有区别

    print ‘hello’

    换行用
    换行符换行

    输出的标签将被浏览器解析,本质上html页面和json数据对后台来说都是遗传字符串而已

    print ‘

方法形式

print(‘你非要括号也行’)

输出一个数组 将会抛出警告

print([1,2,3]) # 错误方式

非要输出数组,使用print_r

print_r([1,2,3])

print_r还能输出对象和资源类型

资源类型 resource 是一种特殊变量, 保存了到外部资源的一个引用。例如 打开文件、数据库连接、图形画布区域等等

  1. - echo 的功能以及用法和print是一样的,唯一的区别就是echo能输出多个参数,且echo的解析会比print

echo ‘
=== ehco ===
‘;

语法结构输出,一般都是用语法结构输出的

echo ‘hello world’, ‘emmm’, ‘
‘;

方法输出,只能接受一个参数 划重点

echo(‘hello world’);

多个参数会抛出异常 Parse error

echo(‘hello world’, ‘
‘); # 错误写法

  1. - var_dump 能输出所有的数据类型 数据信息, 常用于调试 十分常用

var_dump([1,2,3,4]);

二维数组

var_dump([[1,2,3,4,5],[‘name’=>’php’, ‘des’=>’4个月左右’]]);

  1. <a name="ePxxa"></a>
  2. ### 三、注释
  3. - // 单行注释
  4. - *单行注释 同上,但比较少用
  5. - /* 多行注释 */ ctrl+shift+?
  6. - /** 块注释 */ 用于对文件,方法,数据结构和算法的描述

函数功能描述的注释

/**

  • @Author dream;
  • @Return array;
  • */

    php函数不区分大小写

    php的变量必须区分大小写

    function Mysql(){

    return [1,2,3,4] } mysql() ```

    1-2. 常量与变量

    一、变量

    在php中变量也是有类型的,如 全局 | 局部 | 静态 |动态 变量类型不是指数据类型!!!

1-1 变量的定义

  • 变量的定义统一使用 $ 美元符定义
  • php是一门弱类型的脚本语言,所以不像C语言一般,定义变量时不需要规定其数据类型
  • 在脚本运行中亦是可以动态改变其数据类型的
  • 变量定义没有指定初始值,其值默认为null,直接输出会抛出Notice警告,但不影响代码执行

    1. $a = 'hello world';
    2. echo $a; // 输出变量a 的值
    3. $a = 'hello'; // 这里需要知道 重复定义就会覆盖
    4. $a; // 没有使用 = 号赋值,默认值为null

    1-2 函数的引用

    使用global 在函数中引入全局变量
    使用 $GLOBALS 获取全局变量

    1. global $a //使用global 在函数中引入全局变量
    2. var_dump($GLOBALS.$a) // 使用 $GLOBALS 获取全局变量
    3. function fun(){
    4. static $a = 1 // 通过 static 将函数内部有生命周期的变量 变为 静态变量
    5. }

    二、常量

    1-1 常量定义

  • 常量一般都是大写 使用define定义 const

    1. define('A', 124545);
    2. const ADD_CART_NUM = 1245
    3. echo A;

    1-2 常量不存在再去定义

    1. defined('A') || define('A',545454);

    三、数据类型

    共8种数据类型

  • boolean

  • integer
  • float
  • string
  • array
  • object
  • null

    1-1 数据类型转换

  • 在要转换的变量之前加上用括号括起来的目标类型

    1. $num1 = 3.14;
    2. $num2 = (int)$num1;
    3. var_dump($num1); //输出float(3.14)
    4. var_dump($num2); //输出int(3)
  • 使用3个具体类型的转换函数,intval()、floatval()、strval()

    1. $str = "123.9abc";
    2. $int = intval($str); //转换后数值:123
    3. $float = floatval($str); //转换后数值:123.9
    4. $str = strval($float); //转换后字符串:"123.9"
  • settype进行数据类型转换

    1. $num4=12.8;
    2. $flg=settype($num4,"int");
    3. var_dump($flg); //输出bool(true)
    4. var_dump($num4); //输出int(12)
  • 判断字符串全部由数字组成

    1. $str = '123';
    2. if(ereg('^[0-9]+$', $str)){
    3. // true
    4. }

    四、数组相关

  • 创建数组

    1. $arr = array(1,2,3);
    2. $arr = [1,2,3]
  • 接受一个数组每次+2

    1. $arr = range(1,10,2) //输出 [1,3,5,7,9]
  • 修改一个数组

    1. $arr = range(1,10);
    2. $arr[count($arr)-1] = '数组的最后一项';
    3. var_dump($arr);
  • 数组自增 不用初始化

    1. $arr2[] = '呵呵';
    2. $arr2[] = '哈哈';
    3. vaar_dump($arr2);
  • 关联数组

    1. $arr7 = [
    2. "name" => 'php',
    3. 'age' => int 24
    4. ]
  • 将数组转换为json字符串

    1. json_encode($arr)
  • 数组循环

    1. // 可以遍历任何类型的数组
    2. $arr2 = [
    3. 'xiaohong' => '6',
    4. 'xiaolan' => '5',
    5. ];
    6. foreach ($arr2 as $key => $value) {
    7. echo '<br/>'.$key.':'.$value;
    8. }
    9. // 索引数组循环
    10. $arr4 = [1,2,3,4,5];
    11. $len = count($arr4);
    12. for ($i= 0; $i < $len; $i++){
    13. echo '<li>', $arr4[$i], '</li>';
    14. }

    1.1 数组方法

  • current(数组) 当前指针指向的数组元素

    1. current($arr);
  • next(数组) 返回数组的下一个元素 依次叠加

    1. next($arr);
  • prev(数组) 返回数组的下一个元素 依次叠加

    1. prev($arr);
  • reset(数组) 指向数组第一个并返回

    1. reset($arr);
  • array_shift(数组)将数组第一个元素移除数组并返回

    1. $arr = [154,12154,56,784,45,145,'f','D','s'];
    2. array_shift($arr)
  • 在数组开头添加元素

    1. array_unshift($arr, 'first')
  • 移除数组最后一位

    1. array_pop($arr)
  • 添加到数组最后一位

    1. arr_push($arr,'被push的值')
  • 判断数组中是否存在某个键值

    1. arr_key_exists('join_key',$arr) // 输出false
  • 判断数组中是否存在某个值

    1. in_array('a',$arr)
  • 将数组转换成字符串

    1. implode($arr, ',')
  • sort(数组)将数组的值从小到大排序

    1. sort($arr); // 会将关联数组改为索引数组
  • 从下标为0开始取,取3个

    1. array_slice($arr,0,3) // 默认数组长度
  • 从数组末尾取2个

    1. array_slice($arr,-2)
  • array_map(‘值’,$arr)生成一个新的数组,不会修改原数组

  • 过滤数组 array_filter($arr); // 默认过滤空值
  • 每次从数组中随机取出元素

    1. array_rand($arr);
  • 数组去重

    1. array_unique($arr);

    五、字符串

    1. $str = 'php'
    2. echo "想成为全栈开发工程师,就来学习{str}吧!!!"
  • 定位符

    1. <<<EOF
    2. class="container" id='box' $name
    3. EOF;
  • 去除空格

    1. ltrim($str); // 去除左边空格
    2. rtrim($str); // 去除右边空格
    3. trim($str); // 去除两端空格
  • 获取字符串长度

    1. strlen($str) // 获取字节长度
    2. mb_strlen($str) // 获取字符串长度
  • 字符串截取

    1. $str = 'hello world';
    2. mb_substr($str,1)
  • 字符串替换

    1. substr_replace($str,'h',0,3)

    六、函数与代码重用

  • include require 文件载入

  • include_once(“../index.php”)

    1. require_once("../index.php") //如果已经引入则自动忽略
  • 获取当前文件路径

    1. __DIR__;
  • 获取系统分隔符

    1. __DIR__.DIRECTORY_SEPARATOR.'index.php'

    1.1 函数的调用

  • 定义函数

    1. function foo(){
    2. return '你好'; // 不return的话会返回NULL
    3. }
  • 检测函数是否被定义

    1. funtion_exists('foo'); // 返回true或false

    // 排查错误 调试方式

    1. exit();
  • 变量是否存在

    1. isset($a);
  • 变量的值是否为空

    1. empty($a)
  • 在形参前添加&符号为引用

    1. $data = ['age'=>'18'];
    2. function arr ($key,$val,&$data){
    3. $data[$key] = $val;
    4. var_dump($data);
    5. };
    6. arr('name','郁白',$data);
    7. var_dump($data);
  • 匿名函数 ``` $fun = function (){

}

  1. - use 关键字引入全局变量 $fun = function($key,$val) use (&$data){ $data[$key] = $val; } $fun('abc','555')
  2. <a name="R9MHE"></a>
  3. #### 1.2.时间日期
  4. - [momentjs.cn](http://momentjs.cn) js时间日期格式化插件
  5. - time时间戳

$itme = time()

  1. - date() 格式化时间

date(‘Y-m-d h:i:s’, $t)

  1. - date_default_timezone_set('PRC') 设置时区
  2. - date_default_timezone_get(); 获取时区
  3. - format字符串时间格式化
  4. - getdate() 以数组的形式获取时间

getdate()

  1. - 根据参数返回规定的时间戳

mktime(14,0,0,2,4,2020,is_dst) // mktime(时,分,秒,月,日,年,是否为夏令时已被废弃)

  1. - 时间对比

strtotime(“2019-02-01”) // 时间转化为时间戳 time() - strtotime(“-1hour”) // 获取前1小时的时间 3600秒 time() - strtotime(“-1hour-30minuter”) //获取一个半小时以前 strtotime(“1day”); // 获取明天的时间 ```