PHP基础复习(二)——常量及数据类型

前言

本系列文章主要是根据实战视频《360大牛:全面解读PHP面试》学习过程中记录的学习笔记,期间也会加入查找资料和平时学习中学习到的知识。

数据类型

PHP中数据类型主要分为三大数据类型(标量、复合、特殊):

标量:浮点、整型、字符串、布尔

复合:数组、对象

特殊:null、resource

浮点类型

浮点类型不能运用到比较运算中。

<?php 
   $a = 0.1;

   $b = 0.7;

   if($a +$b == 0.8) {
      echo "true";
   } else {
      echo "false";   false   $a + $b = 0.79999999
   }   

 

布尔类型

FALSE的七种情况:

0, 0.0, '', '0', false,  array() ,  NULL   (整型0、浮点0.0、布尔false、空字符串、0字符串、空数组、NULL)

 

字符串

①定义方式:

单引号、双引号、heredoc和nowdoc

②区别

1)单引号不能解析变量;

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

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

<?php

//单引号不能解析变量;双引号可以

$a = 'g';

$str = 'abcdef$ah';      //输出结果  abcdef$ah

$str = "abcdef'{$a}'h";   //输出结果   abcdef‘g’h

//单引号不能解析转义字符,只能解析单引号和反斜线本身
echo '\n';      //   输出   \n
echo '\\';      //   输出   \
echo '\'';      //   输出   '

//连接符连接
$str = 'hello';
echo $str . ' world';        //输出  hello world

2)双引号可以解析变量,可以使用特殊字符和{}包含;双引号可以解析所有转义字符;可以使用.来连接。

3)单引号效率更高。

4)Herdoc类似于双引号;Nowdoc类似于单引号

<?php
$str = <<<EoT

        .

        .          //heredoc 类似于双引号 可以解析变量和转义字符

        .

EoT;



$str = <<<'EoT'

        .

        .          //nowdoc类似于单引号  不可以解析变量和转义字符

        .

EoT;

两者都用于处理大文本

在使用 heredoc 和 nowdoc 时,经常会遇到如下报错:

Parse error: syntax error, unexpected T_SL in php

一般遇到该问题的原因是定界符之后空格的问题引起的。如上例中的EOT后面有空格就会报这个错。处理是否有空格还有一个小技巧。以vim为例,语法正确时,开始和结尾处的EOF会高亮显示。不高亮时,则证明语法有问题。(参考链接:https://blog.csdn.net/jinxingfeng_cn/article/details/51643619) 

 

数组类型 

超全局数组

$GLOBALS  引用全局作用域中可用的全部变量。$GLOBALS 这种全局变量用于在 PHP 脚本中的任意位置访问全局变量(在函数或方法中均可)。PHP 在名为 $GLOBALS[index] 的数组中存储了所有全局变量。变量的名字就是数组的键。

$_GET  可用于收集提交 HTML 表单 (method="get") 之后的表单数据。也可以收集 URL 中的发送的数据。

$_POST  用于收集提交 method="post" 的 HTML 表单后的表单数据。$_POST 也常用于传递变量。

$_REQUEST  用于收集 HTML 表单提交的数据。尽量不使用它,因为不论是post还是get都可以访问。

$_SESSION    会话机制。取得当前用户访问的唯一标识,以数组形式体现,如sessionid以及自定义session数据。session 变量,当前脚本可用的 SESSION 变量的数组。

$_COOKIE  会话机制。获取和设置当前网站的Cookie标识。HTTP Cookies 变量,通过 HTTP Cookies 方式传递给当前脚本的变量的数组。

$_SERVER  保存关于报头、路径和脚本位置的信息。服务器信息变量,包含了诸如头信息(header)、路径(path)、以及脚本位置(script locations)等信息的数组。这个数组中的项目由 Web 服务器创建。

$_FILES    由HTTP POST 文件上传而提交至脚本。HTTP 文件上传变量,通过 HTTP POST 方式上传到当前脚本的项目的数组。

$_ENV     与当前脚本文件的执行环境相关的一些变量。环境变量,通过环境方式传递给当前脚本的变量的数组。

 

注意:

$GLOBALS 包含了后面的所有超全局数组

$_REQUEST 包含了 $_GET 、  $_POST 、 $_COOKIE   。$_REQUEST 尽量少用。

对于 $_SERVER 需要记住常用的属性:

$_SERVER['SERVER_ADDR]          服务器ip地址

$_SERVER['SERVER_NAME]          服务器名字

$_SERVER['SERVER_TIME]            请求时间

$_SERVER['QUERY_STRING]         查询字符串,可能为空

$_SERVER['HTTP_REFERER]        上一级请求的页面

$_SERVER['HTTP_USER_AGENT]  http的header中user_agent的信息

$_SERVER['REMOTE_ADDR]          客户端ip地址

$_SERVER['REQUEST_URI]            如请求为  www.imooc.com/index.php   那么该值为    /index.php

$_SERVER['PATH_INFO]                 url中地址部分   www.imooc.com/index.php/user/reg?status=true  该值为  user/reg

NULL

变量为 NULL 的三种情况:

直接赋值为NULL、未定义的变量、unset()销毁的变量。

常量

①定义:

const    define

②区别:

const是语言结构,效率更快,  define是函数。

define不能用于类常量的定义,const则可以。

注意:常量一经定义,不能被修改,也不能被删除。

魔术常量

PHP中有八个魔术常量,它们的值会随着它们在代码中的位置的改变而改变。这些特殊的常量不区分大小写。

__FILE__                   当前PHP程序脚本的绝对路径及文件名称。返回当前文件的绝对路径(包含文件名)。

__LINE__                   存储该常量所在的行号。返回文件中的当前行号。也可写成__line__。

__DIR__                    返回当前文件的绝对路径(不包含文件名),等价于 dirname(__FILE__)。

__FUNCTION__        存储该常量所在的函数名称。返回当前函数(或方法)的名称。

__CLASS__               存储该常量所在的类的名称。返回当前的类名(包括该类的作用区域或命名空间)。

__TRAIT__                返回当前的trait名称(包括该trait的作用区域或命名空间)。

__METHOD__           存储该常量所在的类的方法的名称。返回当前的方法名(包括类名)。

__NAMESPACE__    返回当前文件的命名空间的名称。

预定义常量

内核预定义常量:是在PHP的内核中就定义好了的常量。区分大小写。

PHP_VERSION      存储当前PHP的版本号,也可以通过PHPVERSION()函数获取。

PHP_OS                 存储当前服务器的操作系统。

PHP_EOL               系统换行符,Windows是(\r\n),Linux是(\n),MAC是(\r)。

非全局预定义变量

$php_errormsg:前一个错误信息,$php_errormsg 变量包含由 PHP 生成的最新错误信息。这个变量只在错误发生的作用域内可用,并且要求 track_errors 配置项是开启的(默认是关闭的)。

$HTTP_RAW_POST_DATA:包含 POST 提交的原始数据。

$http_response_header:HTTP 响应头,$http_response_header 数组与 get_headers() 函数类似。当使用HTTP包装器时,$http_response_header 将会被 HTTP 响应头信息填充。

$argc:传递给脚本的参数数目,包含当运行于命令行下时传递给当前脚本的参数的数目。脚本的文件名总是作为参数传递给当前脚本,因此 $argc 的最小值为 1,这个变量仅在 register_argc_argv 打开时可用。

$argv:传递给脚本的参数数组,包含当运行于命令行下时传递给当前脚本的参数的数组。第一个参数总是当前脚本的文件名,因此 $argv[0] 就是脚本文件名,这个变量仅在 register_argc_argv 打开时可用。

 

常量与数据类型解题方法

把我们总结的点进行梳理和复习,牢记。

 

参考链接:

https://blog.csdn.net/jinxingfeng_cn/article/details/51643619

https://blog.csdn.net/lamp_yang_3533/article/details/50909260

http://www.w3school.com.cn/php/php_superglobals.asp

https://www.cnblogs.com/zdigd/p/7423488.html

 

 

 

 

 

 

 

 

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值