zoukankan      html  css  js  c++  java
  • PHP

    小知识

    IP 127.0.0.1 在windows等系统的正确解释是:本机地址(本机服务器)
    B站视频地址:PHP快速从入门到半吊子

    基本语法

    # 双引号可以解析单引号的值
    $a='45';
    $b="11$a";
    echo $b;
    
    # 输出
    1145
    
    # 变量连接(因为php是弱类型语言)
    echo $a.$b
    
    # 输出
    451145
    

    输入输出

    # 通过 $_GET 或 $_POST 超全局变量来接收参数
    # 输出变量有 print_r() | var_dump() | print() | var_export()
    // 可代理操作的软件有 postman 或 BurpSuite
    // http://127.0.0.1/index.php?a=hello&b=world
    
    # $_GET 用于接收参数
    echo $_GET['a'],$_GET['b'];
    
    # $_POST 至今搞不懂
    
    # print_r() 输出数组或对象
    print_r($_GET);
    
    # var_dump() 输出数组或对象,并带上数据类型
    var_dump($_GET);
    
    # print() // 和 print_r() 一样,但只能输出一个参数
    print(json_encode($_GET));
    
    # var_export() // 和 var_dump() 一样,只能输出符合php的合法代码
    var_export($_GET);
    
    # 输出
    helloworld
    Array ( [a] => hello [b] => world )
    array(2) { ["a"]=> string(5) "hello" ["b"]=> string(5) "world" }
    {"a":"hello","b":"world"}
    array ( 'a' => 'hello', 'b' => 'world', )
    

    基本变量

    # 字符串
    $a = "字符串:x61";
    var_dump($a);
    
    # 数值
    $b = 0x66;//十六进制
    $c = 066;//八进制
    var_dump($b,$c);
    
    # 数组
    $d = [1,2,3]; //php 5.4 以后才支持的写法
    $e = array(1,2,3);
    $f = array(
        'a'=>1,
        'b'=>2,
        'c'=>3
    );
    var_dump($d,$e,$f);
    
    # 输出
    string(11) "字符串:a"
    int(102)
    int(54)
    array(3) { [0]=> int(1) [1]=> int(2) [2]=> int(3) }
    array(3) { [0]=> int(1) [1]=> int(2) [2]=> int(3) }
    array(3) { ["a"]=> int(1) ["b"]=> int(2) ["c"]=> int(3) } 
    

    数组详解

    $a = array(1,2,3,4,5);
    
    $b = ['abc',$a,2,3,1];
    
    $c = [
        'a'=>'666',
        'b'=>233,
        'c'=>[
            10,20,30,40
        ]
    ];
    
    # 都代表在最后插入一个元素
    $a[] = 6;
    array_push($a,7);
    var_dump($a);
    
    // 输出
    // array(7) { [0]=> int(1) [1]=> int(2) [2]=> int(3) [3]=> int(4) [4]=> int(5) [5]=> int(6) [6]=> int(7) }
    
    # 删除最后一个元素
    $d = array_pop($a);
    var_dump($d);
    echo "<br />";
    var_dump($a);
    
    // 输出
    // int(7)
    // array(6) { [0]=> int(1) [1]=> int(2) [2]=> int(3) [3]=> int(4) [4]=> int(5) [5]=> int(6) } 
    
    # 取出最后一个元素,不删除
    $d = end($a);
    var_dump($d);
    echo "<br />";
    var_dump($a);
    
    // 输出
    // int(6)
    // array(6) { [0]=> int(1) [1]=> int(2) [2]=> int(3) [3]=> int(4) [4]=> int(5) [5]=> int(6) } 
    
    # 取出第一个元素,并删除
    array_shift($a);
    var_dump($a);
    
    // 输出
    // array(5) { [0]=> int(2) [1]=> int(3) [2]=> int(4) [3]=> int(5) [4]=> int(6) } 
    
    # 给出总元素个数
    $d = count($c);
    var_dump($c);
    
    // 输出
    // array(3) { ["a"]=> string(3) "666" ["b"]=> int(233) ["c"]=> array(4) { [0]=> int(10) [1]=> int(20) [2]=> int(30) [3]=> int(40) } } 
    
    # 排序
    sort($b);
    var_dump($b);
    
    // 输出
    // array(5) { [0]=> int(1) [1]=> int(2) [2]=> int(3) [3]=> string(3) "abc" [4]=> array(5) { [0]=> int(1) [1]=> int(2) [2]=> int(3) [3]=> int(4) [4]=> int(5) } } 
    
    # 根据键排序
    ksort($b);
    var_dump($b);
    
    // 输出
    // array(5) { [0]=> int(1) [1]=> int(2) [2]=> int(3) [3]=> string(3) "abc" [4]=> array(5) { [0]=> int(1) [1]=> int(2) [2]=> int(3) [3]=> int(4) [4]=> int(5) } } 
    
    # 判断存在某个元素
    $d = isset($a[6]);
    var_dump($d);
    
    // 输出
    // bool(false) 
    
    # 返回数组的键
    $d = array_keys($a);
    var_dump($c);
    
    // 输出
    // array(3) { ["a"]=> string(3) "666" ["b"]=> int(233) ["c"]=> array(4) { [0]=> int(10) [1]=> int(20) [2]=> int(30) [3]=> int(40) } } 
    
    # 删除某个成员,但键值不会变(存在bug,不常用)
    unset($a[1]);
    var_dump($a);
    
    // 输出
    // array(4) { [0]=> int(2) [2]=> int(4) [3]=> int(5) [4]=> int(6) } 
    
    # 去掉数组中的某一部分并用其他值取代,第二个参数是起始位置
    # 第三个参数是删除/替换长度,第四个参数不写就是删除
    array_splice($a,1,2,array(1,2));
    var_dump($a);
    
    // 输出
    // array(4) { [0]=> int(2) [1]=> int(1) [2]=> int(2) [3]=> int(6) } 
    

    分支结构

    # 异或
    var_dump(1 xor 0);
    // 输出
    bool(true) 
    
    # if | else | else if
    if($_GET['user']=='xiaotuan') {
        if(isset($_GET['password']) && $_GET['password']=='yes') {
            echo '登入成功';
        } else {
            echo '登入失败';
        }
    } else if($_GET['user']=='pork') {
        echo '登入成功';
    } else {
        echo '登入失败';
    }
    
    // 输出
    // http://127.0.0.1/index.php?user=xiaotuan&&password=yes
    # 登入成功
    // http://127.0.0.1/index.php?user=pork
    # 登入成功
    // http://127.0.0.1/index.php?user=xiaotuan&&password=no
    # 登入失败
    
    # switch
    switch($_GET['user']) {
        case 'xiaotuan':
        case 'yes':
        case 'no': {
            echo '登入成功';
            break;
        }
        default: {
            echo '登入失败';
            break;
        }
    }
    
    // 输出
    // http://127.0.0.1/index.php?user=xiaotuan
    # 登入成功
    // http://127.0.0.1/index.php?user=pork
    # 登入失败
    

    循环结构

    # for 循环
    for ($i = 0; $i < 10; $i++) {
        echo "$i ";
    }
    
    # while 循环
    $i = 0;
    while ($i < 10) {
        echo "$i ";
        $i++;
    }
    
    # do while 循环
    $i = 0;
    do {
        echo "$i ";
        $i++;
    } while ($i < 10);
    
    # foreach 循环
    $a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
    foreach($a as $key=>$value) {
        echo "$key=>$value".'<br />';
    }
    print_r($a);
    
    # 输出
    0 1 2 3 4 5 6 7 8 9
    0 1 2 3 4 5 6 7 8 9
    0 1 2 3 4 5 6 7 8 9
    0=>0
    1=>1
    2=>2
    3=>3
    4=>4
    5=>5
    6=>6
    7=>7
    8=>8
    9=>9
    Array ( [0] => 0 [1] => 1 [2] => 2 [3] => 3 [4] => 4 [5] => 5 [6] => 6 [7] => 7 [8] => 8 [9] => 9 ) 
    

    include & require

    # include
    // 相当于头文件,当所需头文件不存在,只会警告
    
    include "head.php";
    
    # include_once
    // 与 include 类似,但整个文件仅加载一次
    
    include_once "head.php";
    
    # require
    // 相当于头文件,当所需头文件不存在,会报错
    
    require "head.php";
    
    # require_once
    // 与 require 类似,但整个文件仅加载一次
    
    require_once "head.php";
    
    
    # 补充
    // 也可以将头文件设置为变量
    
    $config = include "head.php";
    

    全局变量 & 函数

    /*
    超级全局变量可以这样看,因为它是相对于全局变量而言的。
    比全局变量更一个层次,全局变量不能作用到函数内部。
    超全局变量可以作用到函数内部
    */
    
    # 超全局变量
    global $a;
    $a = '默认值1';
    $GLOBALS['b']='默认值2';
    
    print_r($GLOBALS);
    
    # 输出
    // Array ( [_GET] => Array ( ) [_POST] => Array ( ) [_COOKIE] => Array ( ) [_FILES] => Array ( ) [GLOBALS] => Array *RECURSION* [a] => 默认值1 [b] => 默认值2 ) 
    
    # 函数
    // 函数名是大小写无关
    
    function fun() {
        echo "123";
    }
    
    Fun();
    
    # 输出
    123
    
    # 嵌套函数
    // PHP的内部函数只要执行了,就是全局函数
    function fun1() {
        function fun2() {
            echo "456";
        }
        echo "123";
    }
    
    fun1();
    fun2();
    
    # 输出
    123456
    
    # 超全局变量/全局变量和函数的运用
    global $a;
    $a = '默认值';
    $GLOBALS['b']='默认值';
    
    function func() {
        global $a;
        echo $a;
        echo $GLOBALS['b'];
    }
    
    func();
    
    # 输出
    //默认值默认值
    

    PHPmyadmin 数据库

    # 面向过程的连接数据库
    $con=@mysqli_connect('127.0.0.1','root','','demo');
    if(!$con) {
        echo "数据库连接失败";
        return;
    }
    
    # 面向对象的连接数据库
    $object = @new mysqli('127.0.0.1','root','','demo');
    if($object->connect_errno) {
        echo "数据库连接失败";
        return;
    }
    
    # 使用编码
    mysqli_query($con,'set names utf8');
    
    // 使用中文
    // mysqli_query($con,'set names gbk');
    
    # 插入数据
    // MySQL指令
    insert into `demo_table`(`data1`,`data2`) value('data1','data2'); 
    
    // php指令
    mysqli_query(
        $con,
        "insert into `demo_table`(`data1`,`data2`) values('{$_GET['data1']}','{$_GET['data2']}')"
    );
    
    // http://127.0.0.1/demo/?data1=test1&data2=test2
    
    # 修改数据
    // 混合指令
    $sql = "update `demo_table` set `data1`='{$_GET['data1']}',`data2`='{$_GET['data2']}' where id={$_GET['id']}";
    
    if (mysqli_query($con, $sql)) {
        echo '修改成功了';
    } else {
        echo '修改失败了';
    }
    
    # 更新、条件、查询、删除、索引 略
    // 视频 P20 P21 没看
    

    补充

    1. 要加分号
    2. 大小写敏感
    3. 可以不写结尾 ?>
    4. 注释可以用 #、//、/**/ 三个
    5. 换行只能用 echo "<br />"; 中的
    6. 视频 类 部分没仔细看
    7. 新特性可以看这个视频,但我懒,不想看
    喜欢划水摸鱼的废人
  • 相关阅读:
    Thinkphp5.0 模型hasOne、hasMany、belongsTo详解
    ES6中async和await说明和用法
    必会SQL练习题
    Git初识学习
    CI框架简单使用
    JavaScript 的 this 原理
    javascript实现游戏贪吃蛇
    js清除childNodes中的#text(选项卡中会用到获取第一级子元素)
    JavaNIO
    MongoDB入门_shell基本操作
  • 原文地址:https://www.cnblogs.com/CourserLi/p/15293476.html
Copyright © 2011-2022 走看看