tft每日頭條

 > 生活

 > php教程新手入門零基礎交流

php教程新手入門零基礎交流

生活 更新时间:2024-07-03 19:00:29

本文章為連載文章

建議先閱讀前篇文章:小白教你PHP

由于時間問題,今天就不做回顧了,我們接着往下講。

常量

常量是相對于變量來說的:是一個其中存儲的數據不會也不應該改變的“标識符”。

常量的使用,就2個方面:定義,取值。

常量的定義:

php教程新手入門零基礎交流(小白教你PHP基礎)1

php教程新手入門零基礎交流(小白教你PHP基礎)2

常量的使用——取值:

也有兩種形式:直接使用名字,或通過constant()函數取得其值;

php教程新手入門零基礎交流(小白教你PHP基礎)3

php教程新手入門零基礎交流(小白教你PHP基礎)4

常量變量的區别

定義形式不同:

使用一個未定義的常量:

先看2個對比代碼:

echo “v1的值為” . $v1; //注意,該變量v1未定義過

echo “C1的值為” . C1; //注意,該常量C1未定義過

注意:在php中,當使用一個未定義的常量的時候,系統會直接将該常量當做“有值”的常量去使用,并且其值就是該常量名——雖然也會報錯!

php教程新手入門零基礎交流(小白教你PHP基礎)5

預定義常量

就是系統中預先定義好的一些常量,大約有幾百個,我們隻要知道幾個就行:

M_PI: 就是圓周率的常量值;

PHP_OS: 就是php運行所在的操作系統

PHP_VERSION:就是php的版本号

PHP_INT_MAX: php中的最大的整數值

......更多可參考:php手冊>附錄>保留字列表>預定義常量

魔術常量

其實隻是常量的形式,但沒有常量的“恒常”的含義:其值其實會變化的,隻有很少的幾個:

__FILE__ :代表當前網頁文件的完整物理路徑

__DIR__ :代表當前網頁文件所在的文件夾

__LINE__ :代表當前這個常量名所在的”行号”

php教程新手入門零基礎交流(小白教你PHP基礎)6

數據類型

總體劃分

有8種數據類型:

基本類型(标量類型):

整數類型: int, integer

浮點數類型: float,double, real

字符串類型: string

布爾類型: bool, boolean 這種類型,隻有2個數據:true,false

複合類型:

數組: array

對象: object

特殊類型

空類型: null 這種類型中,隻有一個數據,那就是null

資源類型: resource

整數類型

整數類型的4種寫法:

$n1 = 123; //10進制數字寫法

$n2 = 0123; //8進制數字寫法,實際n2中存儲的數字比123小

$n3 = 0x123; //16進制數字寫法,實際n3中存儲的數字比123大

$n4 = 0b1010; //2進制數字寫法(目前不學)

php教程新手入門零基礎交流(小白教你PHP基礎)7

進制轉換問題

首先記住這幾個單詞:

bin:2進制

oct:8進制

dec:10進制

hex:16進制

進制轉換主要分2種情況:

1,10進制轉換為其他3種進制:decbin(), decoct(), dechex();

2,其他3種進制,轉換為10進制:

進制轉換的系統函數——必須會用

進制轉換主要分2種情況:

1,10進制轉換為其他3中進制:

decbin(一個10進制數字): 結果返回的是該數字的2進制數字形式的字符串!!!

decoct(一個10進制數字): 結果返回的是該數字的8進制數字形式的字符串!!!

dechex(一個10進制數字): 結果返回的是該數字的16進制數字形式的字符串!!!

php教程新手入門零基礎交流(小白教你PHP基礎)8

2,其他3種進制,轉換為10進制:

bindec(一個2進制數字字符串): 結果返回的是該2進制數字字符串對應的10進制數字!!!

octdec(一個8進制數字字符串): 結果返回的是該8進制數字字符串對應的10進制數字!!!

hexdec(一個16進制數字字符串): 結果返回的是該16進制數字字符串對應的10進制數字!!!

對于輸入的字符串中的字符,如果不是對應進制的數字,會被忽略。

那麼,有沒有這個轉換呢?hexbin()???? ——沒有!

php教程新手入門零基礎交流(小白教你PHP基礎)9

一個思考題:

将8進制字符串”12345”,轉換為2進制結果,怎麼做?

$v1 = octdec(“12345”); //此時,v1是10進制數字

$result = decbin( $v1 ); //此時,就是結果:為2進制數字字符串!

補充進制基礎知識:

10進制1234567891011121314151617
8進制123456710111213141516172021
16進制123456789ABCDEF1011
2進制11011100101110111100010011010101111001101111011111000010001
2021222324
124816

一個課後題:

$v1 = 0x123; //它的實際大小其實是:291

$result = octdec( $v1 ); //結果為:17,怎麼理解?推理如下:

1,octdec( $v1 )

2,octdec(291) //因為$v1的實際值就是291

3,octdec(“291”); //因為octdec()函數要求輸入一個字符串,這屬于自動轉換

4,octdec(“21”); //因為octdec()函數要求輸入一個8進制數字字符串,而9不是合法的數字,忽略掉

5,結果,8進制數字”21”轉換為10進制就是就是17;

進制轉換的人工計算——了解其原理

10進制轉換為2進制:

做法:除2取餘倒着寫出所有餘數,就是對應的2進制數字形式;

詳細解釋:将一個10進制數字除以2,得到商和餘數,如果商還大于等于2,則繼續除以2,繼續得到商和餘數,以此類推,直到商為0為止,然後将前面的所有餘數按倒序寫出來就是對應的2進制數字。

php教程新手入門零基礎交流(小白教你PHP基礎)10

10進制轉換為8進制:

做法:除8取餘倒着寫出所有餘數,就是對應的8進制數字形式;

詳細解釋:将一個10進制數字除以8,得到商和餘數,如果商還大于等于8,則繼續除以8,繼續得到商和餘數,以此類推,直到商為0為止,然後将前面的所有餘數按倒序寫出來就是對應的8進制數字。

php教程新手入門零基礎交流(小白教你PHP基礎)11

10進制轉換為16進制:

做法:除16取餘倒着寫出所有餘數,就是對應的16進制數字形式;

詳細解釋:将一個10進制數字除以16,得到商和餘數,如果商還大于等于16,則繼續除以16,繼續得到商和餘數,以此類推,直到商為0為止,然後将前面的所有餘數按倒序寫出來就是對應的16進制數字。

php教程新手入門零基礎交流(小白教你PHP基礎)12

其他進制轉換為10進制的做法:

先看一種對數字大小和“數字權值”的理解:

對一個10進制數字: 1234,可以這樣去理解它的大小:

1234 = 1*103 2*102 3*101 4*100 = 1000 200 30 4; (任何數的0次方都是1)

這裡,我們對103 , 102, 101, 100 等等,稱為“權值”;每個位的權值是不同的。

對于10進制,每個位上的權值,就是10 的 n次方;

對于8進制,每個位上的權值,就是8的 n次方;

對于16進制,每個位上的權值,就是16 的 n次方;

對于2進制,每個位上的權值,就是2 的 n次方;

8進制轉換10進制:

将8進制數字的每個位上的數字乘以其對應位上的權值,然後相加之後的結果。

舉例:有一個8進制數字123,則其實際大小為:

1 * 82 2 * 81 3 * 80 = 64 16 3 = 83;

16進制轉換10進制:

将16進制數字的每個位上的數字乘以其對應位上的權值,然後相加之後的結果。

舉例:有一個16進制數字123,則其實際大小為:

1 * 162 2 * 161 3 * 160 = 256 32 3 = 291;

2進制轉換10進制:

将2進制數字的每個位上的數字乘以其對應位上的權值,然後相加之後的結果。

舉例:有一個2進制數字101011,則其實際大小為:

1 * 25 0 * 24 1 * 23 0 * 22 1 * 21 1 * 20= 32 0 8 0 2 1 = 43;

浮點類型

浮點數的2種表示形式

1, 常規寫法:帶小數點。

$v1 = 123.456;

2, 科學計數法:帶一個特殊符号“E”

$v1 = 123.456E2; //含義為:123.456乘以10的2次方;

$v2 = 123.456E3; //含義為:123.456乘以10的3次方,雖然結果是123456,但仍然是“浮點型”

$v3 = 123E4; //含義為:123乘以10的4次方,還是浮點數。

浮點數使用的細節知識

浮點數不應進行大小比較

php教程新手入門零基礎交流(小白教你PHP基礎)13

因為:

1,所有數字,最終的表示形式,都是2進制!!!

2,大多數浮點數的2進制形式,不能完全表達準确,最終隻能“以很高的精度接近理論值”

3,因此,浮點數比較是不可靠。

再從另一個角度證明浮點數的不準确性:

php教程新手入門零基礎交流(小白教你PHP基礎)14

php教程新手入門零基礎交流(小白教你PHP基礎)15

說明: php中輸出其實是做了一定的處理之後的顯示結果,而js的輸出是該計算結果的“真實反映”。

那應該怎麼辦?

考慮實際應用所需的精度的情況下,去将要比較的浮點數,轉換為整數之後再比較。

比如:

要求精度為3為小數,則都乘以1000,然後取整後比較;

要求精度為4為小數,則都乘以10000,然後取整後比較;

....

php教程新手入門零基礎交流(小白教你PHP基礎)16

說明: php中輸出其實是做了一定的處理之後的顯示結果,而js的輸出是該計算結果的“真實反映”。

那應該怎麼辦?

考慮實際應用所需的精度的情況下,去将要比較的浮點數,轉換為整數之後再比較。

比如:

要求精度為3為小數,則都乘以1000,然後取整後比較;

要求精度為4為小數,則都乘以10000,然後取整後比較;

....

php教程新手入門零基礎交流(小白教你PHP基礎)17

小數轉二進制的做法:乘2并順序取整數部分(了解):

php教程新手入門零基礎交流(小白教你PHP基礎)18

php教程新手入門零基礎交流(小白教你PHP基礎)19

當整數運算的結果超出整數的範圍後,會自動轉換為浮點數(了解)。

獲取一個數據(變量)的類型的函數有:

getType($變量); 返回的是該類型的名字(字符串);

var_dump($變量): 會輸出該變量的類型,數據内容,(以及長度);

php教程新手入門零基礎交流(小白教你PHP基礎)20

字符串

有如下4形式:

形式1:雙引号字符串:

$str1 = “字符串内容.....”;

形式2:單引号字符串:

$str2 = ‘字符串内容.....’;

形式3:雙引号定界符字符串:

$str3 = <<<”标識符A”

字符串内容....

标識符A;

形式4:單引号定界符字符串:

$str4 = <<<’标識符B’

字符串内容...

标識符B;

雙引号字符串

php教程新手入門零基礎交流(小白教你PHP基礎)21

php教程新手入門零基礎交流(小白教你PHP基礎)22

單引号字符串:

php教程新手入門零基礎交流(小白教你PHP基礎)23

說明:

實際上,單引号字符串中,隻有最後一個“\”才是必須進行轉義的。

雙引号定界符字符串(heredoc):

php教程新手入門零基礎交流(小白教你PHP基礎)24

php教程新手入門零基礎交流(小白教你PHP基礎)25

單引号定界符字符串(nowdoc):

php教程新手入門零基礎交流(小白教你PHP基礎)26

php教程新手入門零基礎交流(小白教你PHP基礎)27

布爾類型

單詞是bool,boolean。

其隻有2個數據:true,false;

布爾類型的一個常見應用情形是:對一個變量直接進行判斷,比如if判斷,示例如下:

php教程新手入門零基礎交流(小白教你PHP基礎)28

這裡的判斷,永遠是指:判斷該變量(數據)“是否為真”。

對于這種情況,隻有如下數據是被當做“假”(false):

0, 0.0, “”, “0”, null, array(), false, 還有一個是“未定義的變量”

其餘都是真。

參考:

手冊》附錄》PHP類型比較表》

php教程新手入門零基礎交流(小白教你PHP基礎)29

類型轉換

自動轉換:

在任何運算中,如果需要某種類型的數據,而給出的數據不是該類型,通常都會發生自動轉換:将該類型轉換為目标需要的類型。

比如: octdec($x), bindec($x), hexdec($x); //這裡就要求$x必須是字符串,如果不是,就會轉換;

$v1 = 1 “2”; //此時也發生了自動轉換。

php教程新手入門零基礎交流(小白教你PHP基礎)30

強制轉換:

自動類型轉換是由“運算符”或類似運算符的語句來決定的。

而:

強制類型轉換,僅僅是一個簡單的語法:

形式:(目标類型)數據;

含義: 将該數據轉換為設定的目标類型;

例子:

php教程新手入門零基礎交流(小白教你PHP基礎)31

通常的轉換目标類型有:

(int), (float), (string), (bool), (array), (object)

上述強制類型轉換,并不改變該變量的本身數據或類型。

對應,有一個語法是直接改變改變本的數據(及類型):

settype( $變量名, “目标類型”);

php教程新手入門零基礎交流(小白教你PHP基礎)32

類型相關的函數

var_dump():用于輸出變量的“完整信息”,幾乎隻用于調試代碼。

getType($變量名):獲取該變量的類型名字,返回的是一個表示該類型名字的字符串,比如:“string”,“bool”,“double”,“int”

setType($變量名,“目标類型”):将該變量強制改變為目标類型;

isset(), empty(), unset();。。。。省略!

is_XX類型() 系列函數:判斷某個數據是否為某種類型,有如下一些:

is_int($x); 判斷$x是否是一個整數類型;

is_float($x);

is_string($x);

is_bool($x);

is_array($x);

is_object($x);

is_null($x);

is_numeric($x); 判斷$x是否是一個數字!

is_scalar($x); 判斷$x是否是一個“标量類型”

查看相關素材及更多課程請搜索微信公衆号“愛搞機個人版”,喜歡學習的建議關注下,所有課程免費! 點下關注不迷路!

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关生活资讯推荐

热门生活资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved