PHP 第三節 變數介紹

2022-10-06 13:39:14 字數 1850 閱讀 8653

變數名與 php 中其它的標籤一樣遵循相同的規則。乙個有效的變數名由字母或者下劃線開頭,後面跟上任意數量的字母,數字,或者下劃線。按照正常的正規表示式,它將被表述為:'[a-za-z_\x7f-\xff][a-za-z0-9_\x7f-\xff]*'。

note: $this 是乙個特殊的變數,它不能被賦值。

變數預設總是傳值賦值。那也就是說,當將乙個表示式的值賦予乙個變數時,整個原始表示式的值被賦值到目標變數。這意味著,例如,當乙個變數的值賦予另外乙個變數時,改變其中乙個變數的值,將不會影響到另外乙個變數。有關這種型別的賦值操作,請參閱表示式一章。

php 也提供了另外一種方式給變數賦值程式設計客棧:引用賦值。這意味著新的變數簡單的引用(換言之,「成為其別名」 或者 「指向」)了原始www.cppcns.com變數。改動新的變數將影響到原始變數,反之亦然。

使用引用賦值,簡單地將乙個 & 符號加到將要賦值的變數前(源變數)。

有一點重要事項必須指出,那就是只有有名字的變數才可以引用賦值。

複製** **如下:

<?php

$foo = 25;

$bar = &$foo; // 合法的賦值

$bar = &(24 * 7); // 非法; 引用沒有名字的表示式

function test()

$bar = &test(); // 非法

?>

雖然在 php 中並不需要初始化變數,但對變數進行初始化是個好習慣。未初始化的變數具有其型別的預設值 - 布林型別的變數預設值是 false,整形和浮點型變數預設值是零,字串型變數預設值是空字串或者陣列變數的預設值是空陣列。

依賴未初始化變數的預設值在某些情況下會有問題,例如把乙個檔案包含到另乙個之中時碰上相同的變數名。另外把 register_globals 開啟是乙個主要的安全隱患。使用未初始化的變數會發出e_notice錯誤,但是在向乙個未初始化的陣列附加單元時不會。isset() 語言結構可以用來檢測乙個變數是否已被初始化。

預定義變數

php 提供了大量的預定義變數。由於許多變數依賴於執行的伺服器的版本和設定,及程式設計客棧其它因素,所以並沒有詳細的說明文件。一些預定義變數在 php 以命令列形式執行時並不生效。

從 php 4.1.0 開始,php 提供了一套附加的預定陣列,這些陣列變數包含了來自 web 伺服器(如果可用),執行環境,和使用者輸入的資料。這些陣列非常特別,它們在全域性範圍內自動生效,例如,在任何範圍內自動生效。因此通常被稱為自動全域性變數(autoglobals)或者超全域性變數(superglobals)。(php 中沒有使用者自定義超全域性變數的機制。)超全域性變數羅列於下文中;但是為了得到它們的內容和關於 php 預定義變數的進一步的討論以及它們的本質,請參閱預定義變數。而且,你也將注意到舊的預定義陣列($http_*_vars)仍舊存在。自 php 5.0.0 起, 用 register_long_arrays 設定選項可禁用 長型別的 php 預定義變數陣列。

變數範圍

變數的範圍即它定義的上下文範圍(也就是它的生效範圍)。大部分的 php 變數只有乙個單獨的範圍。這個單獨的範圍跨度同樣包含了 include 和 require 引入的檔案。

php 的全域性變數和 c 語言有一點點不同,在 c 語言中,全域性變數在函式中自動生效,除非被區域性變數覆蓋。而php中的區域性變數不會被全域性變數覆蓋,如果使用會是變數的預設初始值。這可能引起一些問題,有些人可能不小心就改變了乙個全域性變數。php 中全域性變數在函式中使用時必須申明為global。

使用靜態變數

變數範圍的另乙個重要特性是靜態變數(static variable)。靜態變數僅在區域性函式域中存在,但當程式執行離開此作用域時,其值並不丟失。

本文標題: php 第三節 變數介紹

本文位址: /wangluo/php/87339.html

php第三節課

正規表示式 正規表示式 斜槓代表定界符 str abcde123fg456h reg d echo preg replace reg,str 將字串 str按照職責表示式reg替換為 var dump preg split reg,str 將字串str按照正規表示式拆分 arr array preg...

第三節 變數的解構賦值

es6允許按照一定的模式,從陣列和物件中提取值,對變數進行賦值,這被稱為解構。簡單的陣列解構 以前,為變數賦值,我們只能直接指定值。比如下面的 let a 0 let b 1 let c 2 而現在我們可以用陣列解構的方式來進行賦值。let a,b,c 1,2,3 陣列模式和賦值模式統一 可以簡單的...

編譯原理 第三節

我們知道世界上存在很多種語言 我們可以把他們分為自然語言 人們日常交流的工具 和程式語言。自然語言複雜且難以描述,程式語言結構規整,便於處理。但兩者又有共性,即核心都由語法和語義兩部分組成。那什麼是語言呢?首先來看一下字母表定義 字母表是元素的非空有窮集合。字母表包含了語言中允許出現的全部符號。例如...