我(仍然)是 PHP 新手,並且持續學習。
我經常需要檢索某個變數並存取其屬性。
<?php
$id = $_REQUEST['id'];
$user_info = get_userdata($id);
echo('Username: ' . $user_info->user_login . "<br>");
echo('User level: ' . $user_info->user_level . "<br>");
echo('User ID: ' . $user_info->ID . "<br>");
echo('First Name: ' . $user_info->user_firstname . "<br>");
echo('Family Name: ' . $user_info->user_lastname . "<br>");
echo('user_registered: ' . $user_info->user_registered . "<br>");
?>
我比較願意檢索一次 $user_info = get_userdata($id); ,然後在需要時使用它
在同一個檔案中,但在不同的 <?php?> 區塊
<?php
$id = $_REQUEST['id'];
$user_info = get_userdata($id);
?>
<some HTML>
<?php echo $user_info->user_login; ?>
<some HTML>
<?php echo $user_info->user_login; ?>
但我懷疑 $user_info 不能在區塊之間共享,因為它不是全域的。
通常的做法是什麼?
2 個答案
您可以在區塊(循環、if 語句)中使用它,但不能在函數內使用它。為了使其在函數內部工作,您必須使用 global 關鍵字:
$user_info ....... //declared outside
function foo(){
global $user_info // now available here too
// more code
}
您在 php 程式碼區塊中賦予了太多含義。
這不是全球性的事。
這些區塊屬於同一個 PHP 腳本。這只是輸出 HTML 的一種巧妙方式,僅此而已。您可以用回顯 HTML 來取代它,不會有絲毫差異。
整個 PHP 腳本立即執行,而不是迭代執行,正如您可能想像的那樣,認為 PHP 區塊在伺服器端執行,然後 HTML 區塊在客戶端執行,然後回到伺服器上的 PHP 區塊邊等。這是錯誤的。
整個 PHP 腳本在伺服器端執行,在瀏覽器中產生純 HTML,然後消失。
這就是為什麼您不能在同一個 PHP 腳本中同時對 HTML 表單及其處理程序進行編程,只需將後者放在前者之後。您必須再次呼叫伺服器才能使處理程序正常運作。這將完全是另一個調用,同一腳本的另一個實例,對先前的調用一無所知,而該調用早已死亡。這是您必須了解的有關 PHP 的另一件事:
PHP 腳本執行是原子的。它不像在瀏覽器中不斷運行的桌面應用程序,甚至不像與桌面應用程式持續連接的守護程式。它更像是一個命令行實用程式 - 完成其工作並退出。它獨立運作:
- 瀏覽器進行呼叫
- PHP 喚醒,建立 HTML 頁面,將其傳送到瀏覽器然後終止
- 瀏覽器呈現該 HTML 並將其顯示給使用者。
- 用戶點擊連結
- 瀏覽器進行呼叫
- 另一個 PHP 實例,對先前的呼叫一無所知,被喚醒等等
Hot Questions
Hot Tools
vc9-vc14(32+64位元)運行庫合集(連結在下方)
phpStudy安裝所需運行函式庫集合下載
VC9 32位
VC9 32位元 phpstudy整合安裝環境運行庫
php程式設計師工具箱完整版
程式設計師工具箱 v1.0 php整合環境
VC11 32位
VC11 32位元 phpstudy整合安裝環境運行庫
SublimeText3漢化版
中文版,非常好用
熱門話題
20335
7
13531
4
11850
4
8836
17
8420
7





