我(仍然)是 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
不能在區塊之間共享,因為它不是全域的。
通常的做法是什麼?
您可以在區塊(循環、if 語句)中使用它,但不能在函數內使用它。為了使其在函數內部工作,您必須使用
global
關鍵字:您可以在官方文件上閱讀有關 PHP 變數作用域的更多資訊 :)
您在 php 程式碼區塊中賦予了太多含義。
這不是全球性的事。
這些區塊屬於同一個 PHP 腳本。這只是輸出 HTML 的一種巧妙方式,僅此而已。您可以用回顯 HTML 來取代它,不會有絲毫差異。
整個 PHP 腳本立即執行,而不是迭代執行,正如您可能想像的那樣,認為 PHP 區塊在伺服器端執行,然後 HTML 區塊在客戶端執行,然後回到伺服器上的 PHP 區塊邊等。這是錯誤的。
整個 PHP 腳本在伺服器端執行,在瀏覽器中產生純 HTML,然後消失。
這就是為什麼您不能在同一個 PHP 腳本中同時對 HTML 表單及其處理程序進行編程,只需將後者放在前者之後。您必須再次呼叫伺服器才能使處理程序正常運作。這將完全是另一個調用,同一腳本的另一個實例,對先前的調用一無所知,而該調用早已死亡。這是您必須了解的有關 PHP 的另一件事:
PHP 腳本執行是原子的。它不像在瀏覽器中不斷運行的桌面應用程序,甚至不像與桌面應用程式持續連接的守護程式。它更像是一個命令行實用程式 - 完成其工作並退出。它獨立運作: