您好,登錄后才能下訂單哦!
PHP中單雙號與變量的作用是什么?相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。
例子
<?php $string = "beautiful"; $time = "winter"; $str = 'This is a $string $time morning!'; echo $str. "<br />"; eval("\$str = \"$str\";"); echo $str; ?>
輸出:
This is a $string $time morning!
This is a beautiful winter morning!
分析:
php里,
單引號內的變量不會被執行,
雙引號內的變量會被執行,
雙引號內單引號里面的變量會被執行,
但是雙引號內變量加上反斜杠就可以讓這個變量不被執行,成為特例,比如:
<?php $a=5; echo '$a'."\n"; // 結果輸出 $a echo "$a\n"; // 結果輸出 5 echo "'$a'\n"; // 結果輸出 '5' echo "\$a=".$a; // 結果輸出 $a=5 ,點是連接符 ?> eval("\$str = \"$str\";");
一開始的 \$str 就是這個意思, 前面相當于 $str= ,就是給 $str 這個變量賦值;
后面的兩個反斜杠加引號就是轉義,就表示引號,所以后面的是 "$str" ,這個$str 會被執行,就是 " 'This is a $string with my $name in it.' "
這里又涉及一個雙引號嵌套單引號的問題,比如sql語句
$sql = "select * from user where id = '$id' ";
這里就有雙引號嵌套單引號,這里面的變量 $id 是會被執行的~
也就是說雙引號嵌套單引號那么單引號里的變量也會被執行,,
或者可以簡單地總結:雙引號內的變量如果沒有前面加反斜杠的特例,則都是要執行的;
這個eval雙引號內的將要被執行的代碼就是 $str=" 'This is a $string with my $name in it.' "
補充:
PHP 是一門類型松散的語言
在上面的例子中,請注意我們不必告知 PHP 變量的數據類型。
PHP 根據它的值,自動把變量轉換為正確的數據類型。
在諸如 C 和 C++ 以及 Java 之類的語言中,程序員必須在使用變量之前聲明它的名稱和類型。
PHP 變量作用域
在 PHP 中,可以在腳本的任意位置對變量進行聲明。
變量的作用域指的是變量能夠被引用/使用的那部分腳本。
PHP 有三種不同的變量作用域:
local(局部)
global(全局)
static(靜態)
Local 和 Global 作用域
函數之外聲明的變量擁有 Global 作用域,只能在函數以外進行訪問。
函數內部聲明的變量擁有 LOCAL 作用域,只能在函數內部進行訪問。
下面的例子測試了帶有局部和全局作用域的變量:
實例
<?php $x=5; // 全局作用域 function myTest() { $y=10; // 局部作用域 echo "<p>測試函數內部的變量:</p>"; echo "變量 x 是:$x"; echo "<br>"; echo "變量 y 是:$y"; }
myTest();
echo "<p>測試函數之外的變量:</p>"; echo "變量 x 是:$x"; echo "<br>"; echo "變量 y 是:$y"; ?>
在上例中,有兩個變量 $x 和 $y,以及一個函數 myTest()。$x 是全局變量,因為它是在函數之外聲明的,而 $y 是局部變量,因為它是在函數內聲明的。
如果我們在 myTest() 函數內部輸出兩個變量的值,$y 會輸出在本地聲明的值,但是無法 $x 的值,因為它在函數之外創建。
然后,如果在 myTest() 函數之外輸出兩個變量的值,那么會輸出 $x 的值,但是不會輸出 $y 的值,因為它是局部變量,并且在 myTest() 內部創建。
注釋:您可以在不同的函數中創建名稱相同的局部變量,因為局部變量只能被在其中創建它的函數識別。
看完上述內容,你們掌握PHP中單雙號與變量的作用是什么的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。