国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > PHP > 正文

初學者來看:在PHP關于變量的使用介紹

2024-05-04 23:02:49
字體:
來源:轉載
供稿:網友

就像大部份的結構化程序,有所謂的全局變量與局部變量,php 在這方面也是有相同的處理方式。

在 php 的程序執行時,系統會在內存中保留一塊全局變量的區域。實際運用時,可以透過 $globals["變量名稱"] 將需要的變量取出。在用戶自定的函數或程序中,就可以用 $globals 數組取出需要的變量。當然別忘了 php 的變量有分大小寫,搞錯了大小寫可是叫一百年,變量也不會出來。

$globals 數組是 php 程序中比較特殊的變量,不必定義,系統會自動匹配相關的變量在里面。在函數中,也不必管 $globals 數組是否已經做全局定義,就可以直接使用了。

和 $globals 變量類似的還有 $php_errormsg 字符串變量。若 php 的配置文件 (php.ini/php3.ini) 中的 track_errors 選項打開的話,會有全局變量 $php_errormsg 可以看到錯誤的信息。

在 php 中,全局變量的有效范圍 (scope) 僅限于主要程序中,不會影響到函數中同名的變量,也就是全局變量與局部變量互不侵犯。若要變量能通透到函數中,就要用到 $globals 數組或是使用 global 定義。

例如,在自行開發的函數中,要取得目前執行 php 程序頁面的文件名,就可以用 $globals["php_self"] 取出 $php_self 的值。

<?php
// 本程序使用 $globals 數組
function myfunc() {
echo $globals["php_self"];
}
myfunc();
?>

下面是錯誤的示范,請勿模仿,上面的才是正確的示范。

<?php
// 這是錯誤的示范
function errfunc() {
echo $php_self;
}
errfunc();
?>

但是這個錯誤的示范要是改成下例就沒問題了

<?php
// 本程序使用全局定義
function myfunc() {
global $php_self;
echo $php_self;
}
myfunc();
?>

在變量前面加上 global 的名稱,就是定義該變量為全局變量。用這種方式,就不需使用 $globals 數組,也能讓變量進入自行開發的函數中。

接下來先看靜態變量的例子

<?php
// 靜態變量的例子
function myfunc() {
static $mystr;
$mystr.="哈";
echo $mystr."<br>/n";
}
myfunc();  // 哈
myfunc();  // 哈哈
myfunc();  // 哈哈哈
?>

函數在執行時所產生的變量,在函數結束時就消失了,有時因為程序的需要,函數在循環中,當不希望變量在每次執行完函數就消失的話,靜態變量 (static variable) 就派上用場了。上例中,使用 $mystr 變量之前,先在變量前面加上 static,即表示變量 $mystr 是靜態變量,當每次執行 myfunc() 函數時,$mystr 的值會一直增加,每執行一次就多一個哈字。若將 static 的靜態變量定義拿掉,就沒辦法累加哈字了。

<?php
// 不是靜態變量的例子 (錯誤的)
function myfunc() {
$mystr.="哈";
echo $mystr."<br>/n";
}
myfunc();  // 哈
myfunc();  // 哈
myfunc();  // 哈
?>

再看一個比較實際的例子,它是處理表格的顏色,讓隔行的顏色不同。

<?php
function tdbackcolor() {
static $colorstr;
if ($colorstr=="808080") {
$colorstr="c0c0c0";
} else {
$colorstr="808080";
}
return($colorstr);
}
echo "<table border=1>/n";
for ($i=0; $i<10; $i++) {
$colorstr=tdbackcolor();
echo "<tr><td bgcolor=".$colorstr.">這是第".$i."行</td></tr>/n";
}
echo "</table>";
?>

php 的變量使用技巧上,最令人覺得不可思議的則是變量的變量 (variable variable)。這是充分利用 php 特性玩出的特殊技巧

<?php
$a = "hello";
$$a = "world";
echo "$a, $hello";  // hello, world
echo "$a, {$a}"; // 也是 hello, world
?>

[email protected] 舉出一個更絕的例子 (24-apr-1999),他稱為變量的函數 (variable function)

<?php
function mycallbackfunction()
{
print("hello from callback");
}
function myfunction($callback)
{
$callback();
}
// call to myfunction passing callback
// function as parameter
myfunction("mycallbackfunction");
?>

至于用戶在 form 中輸入的資料,要怎么處理呢?要是在 php 的配置文件中,track_vars 設為 on 時,直接使用變量名字就好了。如下例,next.php 在執行時,系統會自動產生兩個變量 $username 及 $sex,直接使用就好了,比起傳統的 cgi 要自己解析,php 實在是太神奇了。

<form action=next.php method=post>
姓名: <input type=text name="username"><br>
性別: <input type=text name="sex"><br>
<input type=submit>
</form>

由于 php 許多語法都是 c 語言的翻版,故 php 在使用變量時,隨時都可以使用新的變量,只要在使用前將變量初始化就好了,不必像 pascal 語言那樣嚴謹,所有要使用的變量都要事先定義。這當然有好處與壞處:好處是使用方便、自由;壞處就是常常因這些自由而付出相當大的代價調試。在程序碼短的 php 程序當然不成問題,當程序在數百數千行,甚至 include 或 require 好幾層之后,問題就浮現出來了。無論如何,保持良好的寫作習慣才是避免浪費青春的方法。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 岳池县| 赤城县| 河北区| 奉新县| 古交市| 黑河市| 山阴县| 堆龙德庆县| 日喀则市| 嘉祥县| 广汉市| 安国市| 资中县| 乐昌市| 兴国县| 松滋市| 玉溪市| 舒城县| 兴仁县| 新民市| 建昌县| 宝坻区| 美姑县| 大悟县| 顺昌县| 额济纳旗| 汝南县| 高碑店市| 抚宁县| 恩施市| 措勤县| 陇南市| 广德县| 方正县| 怀柔区| 菏泽市| 新宁县| 广汉市| 高安市| 苗栗市| 龙江县|