PHP获得某个变量的名字,代码解释
Hello,在PHP里,我想获得某个变量的名字,如
<code>$name = 'xiaomin'; echo get_varible_name($name); \\ output 'name' </code>
我在这里看到一段代码
<code>function get_variable_name(&$var, $scope = NULL) { if (NULL == $scope) { $scope = $GLOBALS; } $tmp = $var; $var = "tmp_exists_" . mt_rand(); $name = array_search($var, $scope, TRUE); $var = $tmp; return $name; } </code>
其中的$var = "tmp_exists_" . mt_rand();
是什么意思?谁能解释下
回复内容:
Hello,在PHP里,我想获得某个变量的名字,如
<code>$name = 'xiaomin'; echo get_varible_name($name); \\ output 'name' </code>
我在这里看到一段代码
<code>function get_variable_name(&$var, $scope = NULL) { if (NULL == $scope) { $scope = $GLOBALS; } $tmp = $var; $var = "tmp_exists_" . mt_rand(); $name = array_search($var, $scope, TRUE); $var = $tmp; return $name; } </code>
其中的$var = "tmp_exists_" . mt_rand();
是什么意思?谁能解释下
题主仔细读鸟哥的原文就会发现这句话:
显然, 我们需要根据变量的值去查询这个表, 找到值等于要找值的变量, 但是, 这样做又有一个问题, 那就是, 可能会有多个变量的值相等啊?
我们测试一下:
1.注释掉题主疑惑的那句话:
<code>$test1 = 123; $test2 = 123; function get_variable_name(&$var, $scope = NULL) { if (NULL == $scope) { $scope = $GLOBALS; } $tmp = $var; $var = "tmp_exists_" . mt_rand(); // $name = array_search($var, $scope, TRUE); $var = $tmp; return $name; } echo get_variable_name($test1)."\n"; echo get_variable_name($test2); </code>
我们看下输出:
//无法区分
2.现在我们取消注释:
<code>$test1 = 123; $test2 = 123; function get_variable_name(&$var, $scope = NULL) { if (NULL == $scope) { $scope = $GLOBALS; } $tmp = $var; $var = "tmp_exists_" . mt_rand(); $name = array_search($var, $scope, TRUE); $var = $tmp; return $name; } echo get_variable_name($test1)."\n"; echo get_variable_name($test2); </code>
输出如下:
//区分成功
首先回答题主的问题,目的是修改需要查找变量的值使其在全局变量中唯一。然后说下我对这个函数的理解:
这个函数有几处地方需要注意的:
- 首先是参数
&$var
,这里用了引用,需要注意一下,作用在后头会说。 - 然后是使用了
$GLOBALS
超全局变量 - 就是题主说的更改了
$var
变量的值
$GLOBALS超全局变量是一个数组,负责存储页面上所有的变量的,这个函数的意思是通过使用array_search()函数在这个全局变量数组中搜索这个变量值,如果存在的话则返回其键名。为了防止有重复的值出现,函数则使用了 mt_rand() 函数更改了 $var
的值为一个唯一随机变量并在查询结束之后重新把原值赋上,如果没有这句话的话在有变量存在相同值的情况下就无法分辨。
传进来的第一个参数是指向某变量的引用,这样可以在方法内部操作外面传进来的变量。
紧接着开始操作, 给外面的变量,先赋值一个随机、又不重复的临时值,方便在作用域(默认 GLOBAL)里按照值去查找。
找到之后,再把这个变量的值赋回去。
方法的关键是 array_search 的用法, 以值去搜索(所以要给个不可能重复的值),搜到后返回键名(GLOBAL 作用域下的变量, 都存在于 $GLOBAL[$key] = $value 这个数组里)。
函数利用了PHP的变量的变量这个概念.

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

PHP主要是過程式編程,但也支持面向對象編程(OOP);Python支持多種範式,包括OOP、函數式和過程式編程。 PHP適合web開發,Python適用於多種應用,如數據分析和機器學習。

PHP用於構建動態網站,其核心功能包括:1.生成動態內容,通過與數據庫對接實時生成網頁;2.處理用戶交互和表單提交,驗證輸入並響應操作;3.管理會話和用戶認證,提供個性化體驗;4.優化性能和遵循最佳實踐,提升網站效率和安全性。

PHP適合網頁開發和快速原型開發,Python適用於數據科學和機器學習。 1.PHP用於動態網頁開發,語法簡單,適合快速開發。 2.Python語法簡潔,適用於多領域,庫生態系統強大。

PHP起源於1994年,由RasmusLerdorf開發,最初用於跟踪網站訪問者,逐漸演變為服務器端腳本語言,廣泛應用於網頁開發。 Python由GuidovanRossum於1980年代末開發,1991年首次發布,強調代碼可讀性和簡潔性,適用於科學計算、數據分析等領域。

PHP的核心優勢包括易於學習、強大的web開發支持、豐富的庫和框架、高性能和可擴展性、跨平台兼容性以及成本效益高。 1)易於學習和使用,適合初學者;2)與web服務器集成好,支持多種數據庫;3)擁有如Laravel等強大框架;4)通過優化可實現高性能;5)支持多種操作系統;6)開源,降低開發成本。

PHPhassignificantlyimpactedwebdevelopmentandextendsbeyondit.1)ItpowersmajorplatformslikeWordPressandexcelsindatabaseinteractions.2)PHP'sadaptabilityallowsittoscaleforlargeapplicationsusingframeworkslikeLaravel.3)Beyondweb,PHPisusedincommand-linescrip

PHP適用於Web開發和內容管理系統,Python適合數據科學、機器學習和自動化腳本。 1.PHP在構建快速、可擴展的網站和應用程序方面表現出色,常用於WordPress等CMS。 2.Python在數據科學和機器學習領域表現卓越,擁有豐富的庫如NumPy和TensorFlow。

PHP仍然流行的原因是其易用性、靈活性和強大的生態系統。 1)易用性和簡單語法使其成為初學者的首選。 2)與web開發緊密結合,處理HTTP請求和數據庫交互出色。 3)龐大的生態系統提供了豐富的工具和庫。 4)活躍的社區和開源性質使其適應新需求和技術趨勢。
