PHP之變數、常量學習筆記

來源:互聯網
上載者:User

有關變數的傳地址賦值

PHP 3 中,變數總是傳值賦值。PHP 4 提供了另外一種方式給變數賦值:傳地址賦值。使用傳地址賦值,即簡單地追加一個(&)符號到將要賦值的變數前(源變數)。這意味著新的變數簡單的引用了原始變數,改動新的變數將影響到原始變數,反之亦然。

<?php
$foo = 'Bob';
$bar = &$foo;
$bar = "My name is $bar";
echo $bar;
echo $foo;
?>

變數foo只在首行被賦值,正常應輸出為“Bob”,然而傳址賦值給變數bar,在變數bar值發生變化的同時,變數foo的值也發生了變化。

關於(超)全域變數

PHP全域變數的聲明是在引用變數時聲明的,而非在程式首行定義、賦值變數時來定義是全域還是局部變數。

<?php
$a = 1;
$b = 2;

function Sum()
{
global $a, $b;
$b = $a + $b;
}

Sum();
echo $b;
?>

如果函數Sum()內沒有使用global聲明全域變數,程式會報錯未定義的變數。

當然,在PHP中還有一些變數在某程式功能範圍內是不需要global聲明,這些變數稱為 超全域變數,而這些超全域變數基本都不是使用者自訂的,而是PHP預定義的一些變數,比如 $_GET、$_POST、$_COOKIE等。

有關可變變數

PHP中比較有意思的可變變數,比如 $a="bruce" ,還可以使用 $$a 表示為 $bruce ,即可變變數是使用的兩個貨幣符號。

但其中在 $$a[1] 中,是 $a[1] 作為一個變數,還是 $$a 作為一個變數並取出該變數中索引為 [1] 的值?這裡沒有前後的依次關係,而是使用 ${$a[1]} 或 ${$a}[1] 來表示上述兩種情況。

=========================================================

關於常量

常量區別於變數,從常量被定義起其範圍就是全域的

量預設為大小寫敏感,按照慣例常量標識符總是大寫的

常量前面沒有貨幣符號($)

常量一旦定義就不能被重新定義或者取消定義

常量只能用 define() 函數定義,而不能通過指派陳述式

比如 define("MYNAME","cnbruce") 就是定義了一個值為“cnbruce”的MYNAME常量

<?php
define("MYNAME","cnbruce");
$MYNAME="cnrose";
echo MYNAME;
echo $MYNAME;
?>

另外,如何將常量和變數的值一起輸出,這需要涉及到PHP的字串運算,使用英文句號(.)可將字串串連合并成新的字串,類似ASP中的&。

echo MYNAME.",".$MYNAME; 輸出為“cnbruce,cnrose”

和變數中的預定義變數一樣,PHP也有預定義常量(或稱魔術常量),即不需要define() 函數定義。比如

__FILE__ 表示檔案的完整路徑和檔案名稱,類似於ASP中Server.Mappath當前檔案

<?php
echo __FILE__;
?>

PHP預定義常量分為:
核心預定義常量,在 PHP 核心、Zend 和 SAPI 模組中定義的常量
標準預定義常量,PHP 中預設定義的常量

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.