PHP - 基础 - 常量及数据类型

字符串

PHP的字符串定义方式及各自区别

定义方式

变量和变量, 变量和字符串, 字符串和字符串之间可以用.链接

  • 单引号
    • 不能解析变量
    • 不能解析转义字符, 只能解析单引号和反斜线本身
    • 效率更高
  • 双引号
    • 效率偏低
  • Heredoc
    • 类似与双引号
  • Newdoc
    • 类似于单引号

区别

  • 单引号

    1
    2
    3
    4
    5
    6
    7
    <?php
    $a = 'hello world';

    // 单引号
    $str = 'a:$a';
    echo $str; // 输出: a:$a
    ?>
  • 双引号

    1
    2
    3
    <?php
    echo "\n"; // 这里需要使用双引号, 单引号不解析转义
    ?>
  • 双引号

    1
    2
    3
    4
    <?php
    $str = "a:$a";
    echo $str; // 输出 a:hello world
    ?>
  • Heredoc

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?php
    $str = <<<EoT
    a-top
    $a
    a-bottom
    EoT;
    echo $str;
    /** 输出
    a-top
    hello world
    a-bottom
    */
    ?>
  • Newdoc

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?php
    $str = <<<'EoT'
    a-top
    $a
    a-bottom
    EoT;
    echo $str;
    /** 输出
    a-top
    $a
    a-bottom
    */
    ?>

数据类型

三大数据类型(标量, 复合, 特殊)

标量

浮点类型

浮点类型不能运用到比较运算中(不能用于相等的判断)

1
2
3
4
5
6
7
8
9
10
<?php
$a = 0.1;
$b = 0.7;

if($a + $b == 0.8){

}else{
// false:$a+$b = 0.7999999999999999 不等于 0.8
}
?>

布尔类型

FALSE的七种情况

整型0、浮点0.0、空字符串、0字符串、布尔false、空数组、NULL

序号 类型 备注
1 0 整型0
2 0.0 浮点0.0
3 '' 空字符串
4 '0' 0字符串
5 false 布尔false
6 array() 空数组
7 NULL NULL

数组类型

超全局数组

  1. $GLOBALS // 包含 2-8
  2. $_REQUEST //包含3-4, 尽量不使用,安全性偏低
  3. $_GET
  4. $_POST
  5. $_SESSION
  6. $_COOKIE
  7. $_SERVER
  8. $_FIILES
  9. $_ENV
  • $_SERVER 常用属性
    • $_SERVER['SERVER_ADDR'] 服务器IP地址
    • $_SERVER['REMOTE_ADDR'] 客户端IP地址
    • $_SERVER['SERVER_NAME'] 服务器名称
    • $_SERVER['REQUEST_TIME'] 请求时间
    • $_SERVER['HTTP_REFERER'] 上级请求页面
    • $_SERVER['HTTP_USER_AGENT'] 浏览器信息
    • $_SERVER['QUERY_STRING'] 查询语句, ?后面的值
    • $_SERVER["REQUEST_URI"] 域名后面的值,包括/
    • $_SERVER["SCRIPT_NAME"] 获取当前脚本的名称
    • $_SERVER['HTTP_USER_AGENT'] 浏览器信息
    • $_SERVER['PATH_INFO']

URL

NULL

NULL的三种情况
直接赋值未NULL, 未定义的变量, unset销毁的变量

常量

常量一经定义, 不能被修改, 不能被删除

  • 定义方式

    • const
      • 更快, 语言结构
    • define
      • 函数
      • 不能用于类类常量的定义, const可以
  • 预定义常量

    • __FILE__
      • 文件路径名
    • __LINE__
      • 所在行号
    • __DIR__
      • 文件目录
    • __FUNCTION__
      • 函数名称
    • __CLASS__
      • 类名
    • __TRAIT__
      • 5.4特性 TRAIT名称
    • __METHOD__
      • 类名+方法名
    • __NAMESPACE__
      • NAMESPACE

问题

用PHP写出显示客户端IP与服务器IP的代码。

1
2
3
4
5
<?php

echo '客户端IP;' . $_SERVER['REMOTE_ADDR'];
echo '服务器IP;' . $_SERVER['SERVER_ADDR'];
?>

__FILE__ 表示什么意思。

所在文件的文件路径+文件名称