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. 新特性可以看这个视频,但我懒,不想看
    喜欢划水摸鱼的废人
  • 相关阅读:
    自然语言交流系统 phxnet团队 创新实训 项目博客 (十一)
    install ubuntu on Android mobile phone
    Mac OS, Mac OSX 与Darwin
    About darwin OS
    自然语言交流系统 phxnet团队 创新实训 项目博客 (十)
    Linux下编译安装qemu和libvirt
    libvirt(virsh命令总结)
    深入浅出 kvm qemu libvirt
    自然语言交流系统 phxnet团队 创新实训 项目博客 (九)
    自然语言交流系统 phxnet团队 创新实训 项目博客 (八)
  • 原文地址:https://www.cnblogs.com/CourserLi/p/15293476.html
Copyright © 2011-2022 走看看