跟随我在oracle学习php(21)
變量間的傳值方式
總體說(shuō)明:
1,這里討論的傳值方式是指:一個(gè)變量對(duì)另一個(gè)變量
2,它不僅僅適用于賦值語(yǔ)句,也適用于其他有同樣含義的語(yǔ)句,比如:函數(shù)的實(shí)參到形參
3,傳值方式只有2種:值傳遞,引用傳遞
4,php中,所有變量,默認(rèn)都是值傳遞。
5,要想使用引用傳遞,必須使用引用傳遞的符號(hào): &
?
?值傳遞(相互獨(dú)立)
是指將一個(gè)變量的數(shù)據(jù)值(數(shù)據(jù)內(nèi)容)拷貝一份,然后賦值給另一個(gè)變量。
代碼示例:
?
圖示如下:
?
復(fù)制完之后,這兩個(gè)變量就沒(méi)有關(guān)系了(互相獨(dú)立)!
?
結(jié)果為:
?
引用傳值:(相關(guān)聯(lián))
是指將一個(gè)變量的引用關(guān)系拷貝一份,然后賦值給另一個(gè)變量,即另一個(gè)變量也同樣由該關(guān)系決定了指向某個(gè)數(shù)據(jù):
代碼示例:
?
?
?
圖示如下:
?
?
?
賦值(傳值)完之后,兩個(gè)變量指向同樣一個(gè)數(shù)據(jù)。
我們有知道,對(duì)變量的操作就是對(duì)數(shù)據(jù)的操作。
則:
對(duì)變量v1的操作,改變的數(shù)據(jù),也就是體現(xiàn)為v2也發(fā)生了改變。
測(cè)試:
?
?
結(jié)果為:
?
?
另外,在這種引用傳值的情況下,unset一個(gè)變量,則另一個(gè)跟它有關(guān)(指向同樣數(shù)據(jù)的關(guān)系)的變量,并不受影響。
測(cè)試:
?
?
?
結(jié)果:
?
?
?
可變變量 $$$def;
所謂可變變量,就是一個(gè)變量的名,又是一個(gè)變量。
可變變量的語(yǔ)法是php的很特殊的語(yǔ)法——其他語(yǔ)言中少見(jiàn)。
$v1 = “abc”; //這是一個(gè)字符串變量,其內(nèi)容是字符串“abc”
$abc = 10; //這是一個(gè)普通變量,其內(nèi)容是數(shù)字10
echo ?$$v1; //此時(shí),就是所謂“可變變量”
怎么理解:
1,凡是$符號(hào)出現(xiàn),就會(huì)有可能理解為是一個(gè)變量
2,這里第一個(gè)“$”出現(xiàn)了,則php就視圖將其解釋為一個(gè)變量,變量名是$v1;
3,我們有知道,$v1的值是”abc”,
4,那么,第一個(gè)“$”符號(hào)后面的變量名,就得到為“abc”
5,即:echo 試圖輸出的是變量$abc, 自然是數(shù)字10
實(shí)際上,理論上,可變變量的嵌套還可以更多,比如:$$$def;
預(yù)定義變量
綜述:
1:預(yù)定義變量又叫超全局變量,包括:
$_GET, $_POST, $_SERVER, $_REQUEST, $GLOBALS, ?$_COOKIE, $_SESSION, ..........(大約10個(gè))
2:作用域問(wèn)題
php中,自定義的變量的作用域,分兩種:全局作用域(函數(shù)外),局部作用域(函數(shù)內(nèi))。
但:
預(yù)定義變量的作用域稱為“超全局作用域”:全局作用域 + 局部作用域的總和(函數(shù)內(nèi)外全都可用)
3:數(shù)據(jù)類型問(wèn)題:
超全局變量都是數(shù)組!
$_GET變量(數(shù)組):
get這個(gè)詞,常常出現(xiàn)在這里:<form ?action=”abc.php”??method=”get”?>.....</form>
這叫做“表單以get方式提交數(shù)據(jù)”
則$_GET這個(gè)預(yù)定義數(shù)組變量,就是指以這種方式提交的所有數(shù)據(jù)的集合(數(shù)組)
對(duì)應(yīng)來(lái)說(shuō),也可以以post方式提交數(shù)據(jù)
注意:get這個(gè)詞,似乎沒(méi)有中文翻譯。
實(shí)際上,在網(wǎng)頁(yè)中,以get方式提交數(shù)據(jù)有多種形式:
形式一:
<form ?action=”abc.php”??method=”get”?>
項(xiàng)目1: <input type=”text”???name=”uName”???/>
項(xiàng)目2: <input type=”password”???name=”uPswd”???/>
<input type=”submit”??value=”提交”??/>
</form>
其作用是:用戶填寫表單數(shù)據(jù),并提交后,會(huì)將數(shù)據(jù)發(fā)送(提交)給頁(yè)面abc.php,其實(shí)也可以理解為“打開”該網(wǎng)頁(yè)(abc.php),還可以理解為“請(qǐng)求”該網(wǎng)頁(yè)(abc.php)
形式二:
<a ?href=”abc.php?uName=test1&uPswd=123”??> 文字。。。</a>
其作用是:用戶點(diǎn)擊鏈接后,會(huì)將數(shù)據(jù)發(fā)送(提交)給頁(yè)面abc.php,其實(shí)也可以理解為“打開”該網(wǎng)頁(yè)(abc.php),還可以理解為“請(qǐng)求”該網(wǎng)頁(yè)(abc.php),這種請(qǐng)求也是get請(qǐng)求
形式三:
<script>
location.href = “abc.php?uName=test1&uPswd=123”; //利用location對(duì)象的屬性href
</script>
其作用是:當(dāng)該行語(yǔ)句執(zhí)行的時(shí)候(通常其實(shí)是在函數(shù)中),會(huì)將數(shù)據(jù)發(fā)送(提交)給頁(yè)面abc.php,其實(shí)也可以理解為“打開”該網(wǎng)頁(yè)(abc.php),還可以理解為“請(qǐng)求”該網(wǎng)頁(yè)(abc.php),這種請(qǐng)求也是get請(qǐng)求
形式四:
<script>
location.assign( “abc.php?uName=test1&uPswd=123”); //利用location對(duì)象的方法assign()
</script>
其作用是:當(dāng)該行語(yǔ)句執(zhí)行的時(shí)候(通常其實(shí)是在函數(shù)中),會(huì)將數(shù)據(jù)發(fā)送(提交)給頁(yè)面abc.php,其實(shí)也可以理解為“打開”該網(wǎng)頁(yè)(abc.php),還可以理解為“請(qǐng)求”該網(wǎng)頁(yè)(abc.php),這種請(qǐng)求也是get請(qǐng)求
?
不管哪種形式的get提交過(guò)來(lái)的數(shù)據(jù),獲取數(shù)據(jù)是一樣的:
(在abc.php網(wǎng)頁(yè)中)
<?php
$v1 = $_GET[‘uName’]; //單引號(hào)也可以用雙引號(hào),本質(zhì)是一個(gè)字符串,其實(shí)是數(shù)組的鍵名(下標(biāo))
$v2 = $_GET[‘uPswd’]; //該鍵名必須跟提交的時(shí)候的名字完全一致(區(qū)分大小寫)
?>
?
舉例:
?
?
?
提交后:
?
?
轉(zhuǎn)載于:https://www.cnblogs.com/RighTgraM/p/10811770.html
總結(jié)
以上是生活随笔為你收集整理的跟随我在oracle学习php(21)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 相机添加多张图片css布局
- 下一篇: IS环境下配置PHP5+MySql+PH