『壹』 php語句的結構與變數類型
php語句:
一個php文件通常包含HTML標記和一些php語句段。
一個php語句段從<?php 標簽開始,到 ?> 結束。php標簽用於分割其他php語句段和html,php語句寫在兩個標簽中間,可以寫多行PHP語句。
注意:php語句以分號結尾,如果沒有分號,則會繼續分析文件,直到下一個分號,並忽略中間的空格和換行。
php中,回車換行,空格,製表符都被視為空格,php解析器會當它們不存在。
例如:
<?php
echo 'Hello World';
?>
php的變數類型:
php一共八種基本的變數類型,包括如下:
四種標量類型:
boolean (布爾型)
integer (整型)
float (浮點型, 也稱作 double)
string (字元串)
兩種復合類型:
array (數組)
object (對象)
最後是兩種特殊類型:
resource(資源)
NULL(NULL)
另外php還有一些偽類型:
mixed
number
callback
『貳』 PHP變數名、變數值、類型
變數名 =》 zval
變數值 =》zend_value
問題:
引用計數
變數傳遞,變數賦值
變數的基礎結構
變數值:zend_value
typedef union _zend_value {
zend_long lval; /* long value */
double dval; /* double value */
zend_refcounted *counted;
zend_string *str;
zend_array *arr;
zend_object *obj;
zend_resource *res;
zend_reference *ref;
zend_ast_ref *ast;
zval *zv;
void *ptr;
zend_class_entry *ce;
zend_function *func;
struct {
uint32_t w1;
uint32_t w2;
} ww;
} zend_value;
變數名:_zval
typedef struct _zval_struct zval;
struct _zval_struct {
zend_value value; /* value */
union {
struct {
ZEND_ENDIAN_LOHI_4(
zend_uchar type, /* active type */
zend_uchar type_flags,
zend_uchar const_flags,
zend_uchar reserved) /* call info for EX(This) */
} v;
uint32_t type_info;
} u1;
union {
uint32_t var_flags;
uint32_t next; /* hash collision chain */
uint32_t cache_slot; /* literal cache slot */
uint32_t lineno; /* line number (for ast nodes) */
uint32_t num_args; /* arguments number for EX(This) */
uint32_t fe_pos; /* foreach position */
uint32_t fe_iter_idx; /* foreach iterator index */
} u2;
};
變數類型【type】
/* regular data types */
#define IS_UNDEF 0
#define IS_NULL 1
#define IS_FALSE 2
#define IS_TRUE 3
#define IS_LONG 4
#define IS_DOUBLE 5
#define IS_STRING 6
#define IS_ARRAY 7
#define IS_OBJECT 8
#define IS_RESOURCE 9
#define IS_REFERENCE 10
/* constant expressions */
#define IS_CONSTANT 11
#define IS_CONSTANT_AST 12
/* fake types */
#define _IS_BOOL 13
#define IS_CALLABLE 14
/* internal types */
#define IS_INDIRECT 15
#define IS_PTR 17
true 和 flase 沒有zend_value 結構, 直接通過type來區分,zend_long和double的變數指直接存儲在_zend_value中,不需要額外的value指針。
『叄』 php中哪個語句可以輸出變數類型
var_mp和gettype函數均可輸出變數類型,用法如下:
$bl='example';
var_mp($bl);
echo '變數類型為:'.gettype($bl);
『肆』 php中如何讀取環境變數
PHP中的環境變數可以通過 $_SERVER 獲取
$_SERVER是一個包含伺服器端相關信息的PHP全局環境變數,在PHP4.1.0之前的版本使用$HTTP_SERVER_VARS。
下面是詳細的說明及用法:
$_SERVER['PHP_SELF'] 當前正在執行腳本的文件名,與 document root相關。在FORM表單中,如執行文件是本身,你可以在ACTION中使用$_SERVER['PHP_SELF'],好處是當執行文件名有變動時可以不去頻繁替換ACTION中的文件名。
$_SERVER['SERVER_NAME'] 當前運行的PHP程序所在伺服器主機的名稱。
$_SERVER['REQUEST_METHOD'] 訪問頁面時的請求方法,即GET、HEAD、POST、PUT。
$_SERVER['DOCUMENT_ROOT'] 當前運行的PHP程序所在的文檔根目錄。也就是PHP.INI文件中的定義。
$_SERVER['HTTP_REFERER'] 鏈接到當前頁面的前一頁面的URL地址。在頁面跳轉功能中非常有用。
$_SERVER['REMOTE_ADDR'] 正在瀏覽當前頁面訪問者的IP地址。
$_SERVER['REMOTE_HOST'] 正在瀏覽當前頁面用戶的主機名。
$_SERVER['REMOTE_PORT'] 正在游覽的用戶連接到伺服器時所使用的埠。
$_SERVER['SCRIPT_FILENAME'] 當前執行腳本的絕對路徑名。
$_SERVER['SERVER_PORT'] 伺服器所使用的埠
$_SERVER['SCRIPT_NAME'] 包含當前腳本的路徑。這在頁面需要指向自己時非常有用。
$_SERVER['REQUEST_URI'] 訪問此頁面所需的URI。如「/index.html」。
$_SERVER['PHP_AUTH_USER'] 應用在HTTP用戶登錄認證功能中,這個變數是用戶輸入的用戶名。
$_SERVER['PHP_AUTH_PW'] 應用在HTTP用戶登錄認證功能中,這個變數便是用戶輸入的密碼。
$_SERVER['AUTH_TYPE'] 應用在HTTP用戶登錄認證功能中,這個變數便是認證的類型。
備註:上述提到的這些PHP全局環境變數,在php.ini中的register_globals設置為on時,這些變數在所有PHP程序腳本中都可用,也就是$_SERVER數組被分離了。當然為了安全考慮,還是不要將register_globals打開為好。
『伍』 php的數據類型分為哪兩類
變數的定義:在整個php腳本中可以發生改變的量叫做變數
變數命名的規則:
①所有的變數必須用$ 來修飾
②由字母數字下劃線組成
③不能用數字開頭
④可以是中文,但一般不用,不能包含特殊字元
⑤變數名區分大小寫
四種標量數據類型:整型、實型(浮點型) 字元型布爾型
兩種特殊類型:資源 NULL
兩種復合數據類型:數組和對象
常量定義:在整個程序運行過程中其值不發生改變的量,切記常量不加$
例如:define(「A」,10); echo A; 輸出10
Defined(常量名) //檢測常量是否被設置
常量可以一旦被定義不能被修改,在整個運行過程中不可以改變的量
變數可 以改變的量,常量占內存,變數不佔內存 因為變數在腳本執行結束時會自動釋放