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()
來將乙個值轉換成整型。
成功時返回var
的integer
值,失敗時返回0
。 空的array
返回0
,非空的array
返回1
。
最大的值取決於作業系統。 32位系統最大帶符號的integer
範圍是-2147483648
到2147483647
。舉例,在這樣的系統上,intval('1000000000000')
會返回2147483647
。64位系統上,最大帶符號的integer
值是9223372036854775807
。
字串有可能返回0
,雖然取決於字串最左側的字元。使用整型轉換的共同規則。
lnum [0-9]+
dnum ([0-9]*[\.]) | ([\.][0-9]*)
exponent_dnum [+-]?(( | ) [ee][+-]? )
note: string 也可用花括號訪問,比如 $str字串轉換為數值:
如果該字串沒有包含.
,e
或e
並且其數字值在整型的範圍之內(由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 方鴻漸被趙辛楣說,不討厭,卻沒有用處。我認為他還是很可以的,只是愛的不堅定,有憐香惜玉的情懷,骨子裡確是愛情懦夫。父親是鄉紳,受親家資助出國留學,回來後在親家銀行工作,後因與周夫人置氣,至三閭大學教書,又由於趙辛楣送的書中有共產主義的書籍,被解聘,回上海後,在報館工作,因不...