首页 Php 学习笔记
文章
取消

Php 学习笔记

PHP

基础知识 菜鸟教程

https://www.runoob.com/php/php-syntax.html

1. PHP 语法

  1. PHP 脚本可以放在文档中的任何位置。
  2. PHP 脚本以 <?php 开始,以 ?> 结束:
  3. PHP 每行代码用 分隔符 ;来区分指令集
  4. 注释: //单行 /*....*/多行注释

2. PHP 变量

  1. PHP 变量规则:

    • 变量以 $ 符号开始,后面跟着变量的名称
    • 变量名必须以字母或者下划线字符开始
    • 变量名只能包含字母、数字以及下划线(A-z、0-9 和 _ )
    • 变量名不能包含空格
    • 变量名是区分大小写的($y 和 $​Y 是两个不同的变量)
  2. PHP 本身是弱类型语言,声明时不需要指明数据类型。 img

  3. 变量作用域

    • local (应该说的是函数里的变量外面没法用)

    • global (函数中使用全局变量时用 global声明,如 global $a; 或者用$GLOBALS数组来代替,如 $GLOBALS['a']

    • static (只有第一次声明时a会被初始化为0,后面调用这个函数,a的值会不断递加)

      1
      2
      3
      4
      5
      6
      7
      8
      
      <?php
      function test()
      {
          static $a = 0;
          echo $a;
          $a++;
      }
      ?>
      
    • parameter (参数作用域)

3. PHP echo/print

两个函数都可以加括号和不加括号来使用。

echo 和 print 区别:

  • echo - 可以输出一个或多个字符串
  • print - 只允许输出一个字符串,返回值总为 1

提示:echo 输出的速度比 print 快, echo 没有返回值,print有返回值1。

1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
$txt1="学习 PHP";
$txt2="RUNOOB.COM";
$cars=array("Volvo","BMW","Toyota");
 
echo $txt1;
echo "<br>";
echo "在 $txt2 学习 PHP ";
echo "<br>";
echo "我车的品牌是 {$cars[0]}";
echo "这是一个", "字符串,", "使用了", "多个", "参数。";
print "我车的品牌是 {$cars[0]}";
?>

4. PHP EOF(heredoc)

PHP EOF(heredoc)是一种在命令行shell(如sh、csh、ksh、bash、PowerShell和zsh)和程序语言(像Perl、PHP、Python和Ruby)里定义一个字符串的方法。

使用概述:

  • 必须后接分号,否则编译通不过。
  • EOF 可以用任意其它字符代替,只需保证结束标识与开始标识一致。
  • 结束标识必须顶格独自占一行(即必须从行首开始,前后不能衔接任何空白和字符)。
  • 开始标识可以不带引号或带单双引号,不带引号与带双引号效果一致,解释内嵌的变量和转义符号,带单引号则不解释内嵌的变量和转义符号。
  • 当内容需要内嵌引号(单引号或双引号)时,不需要加转义符,本身对单双引号转义,此处相当与q和qq的用法。

//// 变量会被解析,html格式会被解析。

1
2
3
4
5
6
7
8
9
<?php
$name="runoob";
$a= <<<EOF
        "abc"$name<br>
        "<br>$name 123 $name"
EOF;
// 结束需要独立一行且前后不能空格
echo $a;
?>

效果:

image-20210924170219647

5. PHP 数据类型

String(字符串), Integer(整型), Float(浮点型), Boolean(布尔型), Array(数组), Object(对象), NULL(空值)。

6. PHP 常量

bool define ( string $name , mixed $value [, bool $case_insensitive = false ] )

注意:使用常量不能在常量前面加 $

7. PHP 字符串变量

在PHP中,只有一个字符串运算符 . 并置运算符。

相关函数:

  • strlen echo strlen("Hello world!");
  • strpos echo strpos("Hello world!","world"); 会返回第一个匹配的字符位置 找不到 返回 FALSE

8. PHP 运算符

  1. 算术运算符:+ - * / % 取反-x 并置.

    PHP 7.0 增加了一个 intdiv函数 var_dump(intdiv(10, 3)); //返回3

  2. 赋值运算符 略

  3. 递增递减运算符 略

  4. 比较运算符 注意 == === != !== 对于数组而言,==表示具有相同的键值对 ===顺序也要相同

  5. 三元运算符 (expr1) ? (expr2) : (expr3)

    PHP 5.3 起,可以省略三元运算符中间那部分。表达式 expr1 ?: expr3 在 expr1 求值为 TRUE 时返回 expr1,否则返回 expr3。

  6. 组合比较符 (PHP7+) 也称之为太空船操作符

    $c = $a <=> $b;

    • 如果 $a > $b, 则 $c 的值为 1。
    • 如果 $a == $b, 则 $c 的值为 0。
    • 如果 $a < $b, 则 $c 的值为 -1。

9. PHP IF..ELSE Switch

1
2
3
4
5
6
7
8
9
10
11
12
if (条件)
{
    if 条件成立时执行的代码;
}
elseif (条件)   // else if 也行
{
    elseif 条件成立时执行的代码;
}
else
{
    条件不成立时执行的代码;
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
$favcolor="red";
switch ($favcolor)
{
case "red":
    echo "你喜欢的颜色是红色!";
    break;
case "blue":
    echo "你喜欢的颜色是蓝色!";
    break;
case "green":
    echo "你喜欢的颜色是绿色!";
    break;
default:
    echo "你喜欢的颜色不是 红, 蓝, 或绿色!";
}
?>

switch 和c语法基本没区别

10. PHP 数组

  1. 数值数组:其中的ID键自动建立,0开始,可用count()函数获取长度。

  2. 关联数组:$age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");

    遍历:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    <?php
    $age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");
        
    foreach($age as $x=>$x_value)
    {
        echo "Key=" . $x . ", Value=" . $x_value;
        echo "<br>";
    }
    ?>
    

数组排序:

  • sort() - 对数组进行升序排列
  • rsort() - 对数组进行降序排列
  • asort() - 根据关联数组的值,对数组进行升序排列
  • ksort() - 根据关联数组的键,对数组进行升序排列
  • arsort() - 根据关联数组的值,对数组进行降序排列
  • krsort() - 根据关联数组的键,对数组进行降序排列

使用方式:

1
2
3
4
<?php
$cars=array("Volvo","BMW","Toyota");
sort($cars);
?>

11. 超级全局变量

PHP 超级全局变量列表:

  • $GLOBALS:包含了全部变量的全局组合数组。变量的名字就是数组的键。
  • $_SERVER:这个数组中的项目由 Web 服务器创建。
  • $_REQUEST
  • $_POST
  • $_GET
  • $_FILES
  • $_ENV
  • $_COOKIE
  • $_SESSION

11. PHP循环

在 PHP 中,提供了下列循环语句:

  • while - 只要指定的条件成立,则循环执行代码块

  • do…while - 首先执行一次代码块,然后在指定的条件成立时重复这个循环

  • for - 循环执行代码块指定的次数

  • foreach - 根据数组中每个元素来循环代码块

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    
    <?php
    $x=array("Google","Runoob","Taobao");
    foreach ($x as $value)
    {
        echo $value . PHP_EOL;
    }
    ?>
          
    <?php
    $x=array(1=>"Google", 2=>"Runoob", 3=>"Taobao");
    foreach ($x as $key => $value)
    {
        echo "key  为 " . $key . ",对应的 value 为 ". $value . PHP_EOL;
    }
    ?>
    

12. PHP魔术常量

  1. __LINE__

    文件中的当前行号。

  2. __FILE__ 返回目录

  3. __FUNCITON__/__METHOD__ 返回当前函数名,METHOD还会返回类名 Class::func

  4. __CLASS__ 返回当前函数名

  5. __NAMESPACE__

    1
    2
    3
    4
    5
    
    <?php
    namespace MyProject;
        
    echo '命名空间为:"', __NAMESPACE__, '"'; // 输出 "MyProject"
    ?>
    
  6. __TRAIT__

    Trait 的名字(PHP 5.4.0 新加)。自 PHP 5.4.0 起,PHP 实现了代码复用的一个方法,称为 traits。

    Trait 名包括其被声明的作用区域(例如 Foo\Bar)。

    从基类继承的成员被插入的 SayWorld Trait 中的 MyHelloWorld 方法所覆盖。其行为 MyHelloWorld 类中定义的方法一致。优先顺序是当前类中的方法会覆盖 trait 方法,而 trait 方法又覆盖了基类中的方法。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    
    <?php
    class Base {
        public function sayHello() {
            echo 'Hello ';
        }
    }
        
    trait SayWorld {
        public function sayHello() {
            parent::sayHello();
            echo 'World!';
        }
    }
        
    class MyHelloWorld extends Base {
        use SayWorld;
    }
        
    $o = new MyHelloWorld();
    $o->sayHello();
    ?>
    

    通过逗号分隔,在 use 声明列出多个 trait,可以都插入到一个类中。示例代码如下:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    
    <?php
    trait Hello {
        public function sayHello() { 
            echo 'Hello ';    
        }
    }
    trait World {    
        public function sayWorld() {     
            echo 'World';  
        }
    }
    class MyHelloWorld { 
        use Hello, World;  
        public function sayExclamationMark() {   
            echo '!'; 
        }
    }
    $o = new MyHelloWorld();
    $o->sayHello();
    $o->sayWorld();
    $o->sayExclamationMark();
    ?>
    

13. PHP namespace

PHP 命名空间可以解决以下两类问题:

  1. 用户编写的代码与PHP内部的类/函数/常量或第三方类/函数/常量之间的名字冲突。
  2. 为很长的标识符名称(通常是为了缓解第一类问题而定义的)创建一个别名(或简短)的名称,提高源代码的可读性。
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
namespace MyProject {
    const CONNECT_OK = 1;
    class Connection { /* ... */ }
    function connect() { /* ... */  }
}

namespace AnotherProject {
    const CONNECT_OK = 1;
    class Connection { /* ... */ }
    function connect() { /* ... */  }
}
?>
1
2
3
4
<html>
<?php
namespace MyProject; // 命名空间前出现了“<html>” 会致命错误 - 命名空间必须是程序脚本的第一条语句
?>

子命名空间:

1
2
3
4
5
6
7
8
<?php
namespace MyProject\Sub\Level;  //声明分层次的单个命名空间

const CONNECT_OK = 1;
class Connection { /* ... */ }
function Connect() { /* ... */  }

?>

未完待续:https://www.runoob.com/php/php-namespace.html

相关函数

htmlspecialchars()

php函数:htmlspecialchars()

1
2
3
4
<?php
$str = "This is some <b>bold</b> text.";
echo htmlspecialchars($str);
?>

输出:This is some <b>bold</b> text.

该函数将预定义字符转换为实体

var_dump()

返回变量的数据类型和值

本文由作者按照 CC BY 4.0 进行授权

-

github pages + jekyll 博客搭建过程小记