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

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章