讀《PHP 手冊》有感

2022-06-21 21:06:10 字數 4927 閱讀 6727

php 開始和結束標記有四種

當解析乙個檔案時,php 會尋找起始和結束標記,也就是<?php?>

php 7.0.0以後失效

php也允許使用短標記<??>,但不鼓勵使用。只有通過啟用php.ini中的short_open_tag配置指令或者在編譯php時使用了配置選項--enable-short-tags時才能使用短標記,可以使用<?=$_?>輸出變數

自 php 5.4 起,短格式的 echo 標記 <?= 總會被識別並且合法,而不管 short_open_tag 的設定是什麼。

<% echo 'you may optionally use asp-style tags'; %>
asp風格標記僅在通過php.ini配置檔案中的指令asp_tags開啟後才可用。

一段 php **中的結束標記隱含表示了乙個分號;在乙個 php **段中的最後一行可以不用分號結束。如果後面還有新行,則**段的結束標記包含了行結束。

單行注釋//#

塊注釋/* */,不可巢狀

當轉換為 boolean 時,以下值被認為是 false:

<?php

$x=true;

$y=false;

$z=$y or $x;

//$z==false,因為or的優先順序低於=

?>

decimal     : [1-9][0-9]*

| 0hexadecimal : 0[xx][0-9a-fa-f]+

octal : 0[0-7]+

binary : 0b[01]+

integer : [+-]?decimal

| [+-]?hexadecimal

| [+-]?octal

| [+-]?binary

warning 絕不要將未知的分數強制轉換為 integer,這樣有時會導致不可預料的結果。

<?php

echo (int) ( (0.1+0.7) * 10 ); // 顯示 7!

?>

要明確地將乙個值轉換為integer,用(int)(integer)強制轉換。不過大多數情況下都不需要強制轉換,因為當運算子,函式或流程控制需要乙個 integer 引數時,值會自動轉換。還可以通過函式intval()來將乙個值轉換成整型。

成功時返回varinteger值,失敗時返回0。 空的array返回0,非空的array返回1

最大的值取決於作業系統。 32位系統最大帶符號的integer範圍是-21474836482147483647。舉例,在這樣的系統上,intval('1000000000000')會返回2147483647。64位系統上,最大帶符號的integer值是9223372036854775807

字串有可能返回0,雖然取決於字串最左側的字元。使用整型轉換的共同規則。

lnum          [0-9]+

dnum ([0-9]*[\.]) | ([\.][0-9]*)

exponent_dnum [+-]?(( | ) [ee][+-]? )

note: string 也可用花括號訪問,比如 $str

字串轉換為數值:

如果該字串沒有包含.ee並且其數字值在整型的範圍之內(由php_int_max所定義),該字串將被當成integer來取值。其它所有情況下都被作為float來取值。

該字串的開始部分決定了它的值。如果該字串以合法的數值開始,則使用該數值。否則其值為 0(零)。合法數值由可選的正負號,後面跟著乙個或多個數字(可能有小數點),再跟著可選的指數部分。指數部分由 'e' 或 'e' 後面跟著乙個或多個數字構成。

ps: 當精度在0.100000000000001時,將該數字轉成string時會得到"0.1"

array(  key =>  value

, ...

)// 鍵(key)可是是乙個整數 integer 或字串 string

// 值(value)可以是任意型別的值

此外 key 會有如下的強制轉換:

如果在陣列定義中多個單元都使用了同乙個鍵名,則只使用了最後乙個,之前的都被覆蓋了。

<?php

$array = array(

1 => "a",

"1" => "b",

1.5 => "c",

true => "d",

);var_dump($array);

?>

// array(1)

如果對給出的值沒有指定鍵名,則取當前最大的整數索引值,而新的鍵名將是該值加一。如果指定的鍵名已經有了值,則該值會被覆蓋。

如果給出方括號但沒有指定鍵名,則取當前最大整數索引值,新的鍵名將是該值加上 1(但是最小為 0)。如果當前還沒有整數索引,則鍵名將為 0。

注意這裡所使用的最大整數鍵名不一定當前就在陣列中。它只要在上次陣列重新生成索引後曾經存在過就行了

<?php

// 建立乙個簡單的陣列

$array = array(1, 2, 3, 4, 5);

print_r($array);

// 現在刪除其中的所有元素,但保持陣列本身不變:

foreach ($array as $i => $value)

print_r($array);

// 新增乙個單元(注意新的鍵名是 5,而不是你可能以為的 0)

$array = 6;

print_r($array);

php 不支援函式過載,也不可能取消定義或者重定義已宣告的函式。

從 a 到 z 的 ascii 函式名是大小寫無關

ps: php 7.4支援箭頭函式了

get是通過urldecode()傳遞的。

預設情況下包含了$_get$_post$_cookie的陣列。

note: 由於 $_request 中的變數通過 get,post 和 cookie 輸入機制傳遞給指令碼檔案,因此可以被遠端使用者篡改而並不可信。這個陣列的專案及其順序依賴於 php 的 variables_order 指令的配置。

預設是egpcs,可以被request_order覆寫,基本都是gp,這意味著如果$_post$_get有相同鍵的話,$_request$_post會覆蓋$_get

$_request中的資料是複製過去的,並不是引用

ps: get或post傳遞的鍵值中存在某些字元時,後台獲取到的鍵名中會將這些字元替換為_

the full list of field-name characters that php converts to _ (underscore) is the following (not just dot):

chr(32) ( ) (space)

chr(46) (.) (dot)

chr(91) ([) (open square bracket)

chr(128) - chr(159) (various)

cookie中.也是如此

note: 用於描述乙個封裝協議的 url 語法僅支援 scheme://... 的語法。 scheme:/ 和 scheme: 語法是不支援的。

zlib://— 壓縮流

data://— 資料(rfc 2397)

glob://— 查詢匹配的檔案路徑模式

phar://— php 歸檔

ssh2://— secure shell 2

rar://— rar

ogg://— 音訊流

expect://— 處理互動式的流

讀輸贏有感!

前幾天把 輸贏 看完了,很久沒有這樣去看一本書了,確實是一本能激發鬥志的商戰 當然有必不可少的情感糾紛。雖然我們不做銷售,但是也寫下一些感受與大家分享。確實是沒有人想成為輸家,每個人都想成為贏者。無論是在職場,還是情場,但很多情況並不是我們願意看到的,在 輸贏 這本書中,更多的我們看到是一幕幕硬碰硬...

讀《狼道》有感

人生成功的狼性法則 狼道。我在閱讀 狼道 時發現很多的方法都可以在生活中應用,而且我們就是欠缺狼的精神!0.0 冷靜達觀 強者心態 狼每次都會在逆境中重新站起,重新戰鬥。他們不缺少在第一百次失敗後,發動第一百零一次進攻的勇氣。站在山之巔 海之涯。每一頭狼都會露出猙獰的微笑!我們必須能都理性的克制自己...

讀《圍城》有感

圍城 2018.9.30 方鴻漸被趙辛楣說,不討厭,卻沒有用處。我認為他還是很可以的,只是愛的不堅定,有憐香惜玉的情懷,骨子裡確是愛情懦夫。父親是鄉紳,受親家資助出國留學,回來後在親家銀行工作,後因與周夫人置氣,至三閭大學教書,又由於趙辛楣送的書中有共產主義的書籍,被解聘,回上海後,在報館工作,因不...