【PHP面试复习】常量与数据类型考察点

原创
2019/08/13 16:33
阅读数 82

常量与数据类型考察点

字符串相关知识

PHP 中字符串可以使用哪三种定义方式以及各自的区别是什么?

定义方式:

  • 单引号
  • 双引号
  • heredoc和newdoc

单引号区别:

  • 单引号不能解析变量

  • 单引号不能解析转义字符,只能解析单引号和反斜线本身

  • 变量和变量、变量和字符串、字符串和字符串之间可以用 . 连接

双引号区别:

  • 双引号可以解析变量,变量可以使用特殊字符和{}包含
  • 双引号可以解析所有转义字符
  • 也可以使用 . 操作符连接

单引号和双引号的区别:

  • 单引号的效率更高
<?php
$a = 100;
$str = 'abcdef$ag'; 
echo $str . PHP_EOL; // 输出:abcdef$ag
$str = "abcdef'{$a}'gh"; 
echo $str . PHP_EOL; // 输出:abcdef100gh

$sql = "SELECT * FROM user WHERE name='$name'"; // 效率没有单引号高
$sql = 'SELECT * FROM user WHERE name=\''.$name.'\''; // 单引号中的单引号记得转义

Heredoc和Newdoc的区别:

  • Heredoc类似于双引号
  • Newdoc类似于单引号
  • 这两者相对于单引号和双引号是用来处理大文本的
<?php
// Heredoc
$name = "SuperMan";
$str = <<<EOT
你好!我是{$name}。
EOT;

echo $str . PHP_EOL; // 输出:你好!我是SuperMan。

// Newdoc
$str = <<<'EoT'
你好!我是{$name}。
EoT;

echo $str . PHP_EOL; // 输出:你好!我是{$name}。

数据类型知识相关

八大数据类型回顾:

  • 标量
    • 整形 integer
    • 字符串 string
    • 浮点型 float
    • 布尔类型 boolean
  • 符合
    • 数组 array
    • 对象 object
  • 特殊
    • 资源类型 resource
    • 空类型 null

浮点类型注意事项:

  • 浮点类型不能运用到比较运算中
<?php
$a = 0.1;
$b = 0.7;

// 计算中浮点会被转换成为二进制,精度会有损耗,所以结果不一定准确
if($a + $b == 0.8) {
	echo "相对?"; // 这句话不会被输出
}

布尔类型的其中情况:

类型
整数型 0
浮点型 0.0
空字符串 ' '
0字符 '0'
布尔型 false
空数组 array()或者[]
空类型 null

数组类型:

超全局数组

  • $GLOBALS
  • $_GET
  • $_POST
  • $_REQUEST (不建议使用,因为GET\POST\COOKIE他都接收,不安全)
  • $_SESSION
  • $_COOKIE
  • $_SERVER
    • $_SERVER['SERVER_ADDR'] 当前运行脚本所在的服务器的 IP 地址
    • $_SERVER['SERVER_NAME'] 服务器名称
    • $_SERVER['REQUEST_TIME'] 请求时间
    • $_SERVER['QUERY_STRING'] URL中的QUERY字符串
    • $_SERVER['HTTP_REFERER'] 上一个请求的页面
    • $_SERVER['HTTP_USER_AGENT'] 请求的头里面的浏览器信息
    • $_SERVER['REMOTE_ADDR'] 客户端ip地址
    • $_SERVER['REQUEST_URI'] 请求地址
    • $_SERVER['PATH_INFO'] URL中的路径,通用用于框架的路由处理
  • $_FILES
  • $_ENV
// 假设url => "http://www.superman.com/index.php/user/reg?status=dead";
echo $_SERVER['SERVER_ADDR'] . "<br>"; // 127.0.0.1
echo $_SERVER['SERVER_NAME'] . "<br>"; // 127.0.0.1
echo $_SERVER['REQUEST_TIME'] . "<br>"; // 1565683185
echo $_SERVER['QUERY_STRING'] . "<br>"; // status=dead
echo $_SERVER['HTTP_REFERER'] . "<br>";  // 有可能为空,因为直接访问url,不会存在
echo $_SERVER['HTTP_USER_AGENT'] . "<br>"; // Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.87 Safari/537.36
echo $_SERVER['REMOTE_ADDR'] . "<br>"; // 127.0.0.1
echo $_SERVER['REQUEST_URI'] . "<br>"; // /demo02.php/user/reg?status=dead
echo $_SERVER['PATH_INFO'] . "<br>"; // /user/reg

// 用PHP写出显示客户端IP的服务器IP的代码
echo $_SERVER['REMOTE_ADDR'] . "<br>"; // 客户端:127.0.0.1
echo $_SERVER['SERVER_NAME'] . "<br>"; // 服务器:127.0.0.1

NULL:

三种情况:

  • 直接赋值为NULL
  • 未定义的变量
  • unset销毁的变量

常量:

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

定义方式:

  • const 更快,因为是语言结构,可以定义类的常量
  • define 慢,因为是函数,不能定义类的常量

预定义常量:

  • __FILE__ 文件的路径名以及名称
  • __LINE__ 所在行号
  • __DIR__ 所在目录
  • __FUNCTION__ 所在函数体的函数名称
  • __CLASS__ 所在类的类名称
  • __TRAIT__ 5.4+特性,所在trait的名称
  • __METHOD__ 所在方法名称
  • __NAMESPACE__ 5.4+特性,所在命名空间名称
展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部