gpt4 book ai didi

php - 如何改进 var_dump 以显示变量名并将变量值放在
 中?

转载 作者:可可西里 更新时间:2023-11-01 00:34:00 25 4
gpt4 key购买 nike

我在脚本中多次使用 var_dump() 函数来检查变量的实际值和类型。很长一段时间以来,函数 vardump() 定义如下:

function vardump($_var){
echo '<pre>';
var_dump($_var);
echo '</pre>';
}

但今天我已经在很多地方多次使用它,以至于我对我真正检查的是哪个变量感到困惑。所以问题是如何确定我当前正在检查的值的名称?

最佳答案

经过一上午的搜索,我找到了这个解决方案:

/**
* Functions that will display name of the variable, and it's value, and type
*
* @param type $_var - variable to check
* @param type $aDefinedVars - Always define it this way: get_defined_vars()
* @return type
*/
function vardump(&$_var, &$aDefinedVars = null){
if($aDefinedVars){
foreach ($aDefinedVars as $k=>$v)
$aDefinedVars_0[$k] = $v;
$iVarSave = $_var; // now I copy the $_var value to ano
$_var = md5(time());

$aDiffKeys = array_keys (array_diff_assoc ($aDefinedVars_0, $aDefinedVars));
$_var = $iVarSave;
$name = $aDiffKeys[0];
}else{
$name = 'variable';
}

echo '<pre>';
echo $name . ': ';
var_dump($_var);
echo '</pre>';
}

要获取变量名,您必须确保使用如下所示的 vardump():

vardump($variable_name, get_defined_vars());

get_defined_vars() 此函数返回一个多维数组,其中包含调用 get_defined_vars() 范围内的所有已定义变量的列表,无论是环境变量、服务器变量还是用户定义变量。

我将对代码进行更多解释,其中使用了一些奇特的函数。

/**
* Functions that will display name of the variable, and it's value, and type
*
* @param type $_var - variable to check
* @param type $aDefinedVars - Always define it this way: get_defined_vars()
* @return type
*/
function vardump(&$_var, &$aDefinedVars = null){
// $aDefinedVars - is array of all defined variables - thanks to get_defined_vars() function
if($aDefinedVars){
// loop below is used to make a copy of the table of all defined variables
foreach ($aDefinedVars as $k=>$v)
$aDefinedVars_0[$k] = $v; // this is done like that to remove all references to the variables
$iVarSave = $_var; // now I copy the $_var value to another variable to prevent loosing it
$_var = md5(time()); // completly random value
// and the most tricky line
$aDiffKeys = array_keys (array_diff_assoc ($aDefinedVars_0, $aDefinedVars));

因为我已经更改了 $_var 值数组 $aDefinedVars_0$aDefinedVars 是相同的,除了 $_var 值(注意 $aDefinedVars_0 不要使用对变量的引用,所以 chengin $_var 我没有影响 $aDefinedVars_0)。

现在 array_diff_assoc 函数将 $aDefinedVars_0(具有原始值)与 $aDefinedVars(具有更改的 $_var)进行比较> 值)并返回与关联数组(仅包含一个位置 $_var 名称和 $_var 值的数组)的差异。

array_keys 函数从输入数组返回键、数字和字符串(并且输入数组只包含一个位置,即我正在寻找的位置)。

        $_var      = $iVarSave; // now I can restore old $_var value
$name = $aDiffKeys[0]; // name of the $_var is on the first (and the only position) in the $aDiffKeys array
}else{ // is someone won't use get_defined_vars()
$name = 'variable';
}

echo '<pre>';
echo $name . ': ';
var_dump($_var); // it can be changed by print_r($_var);
echo '</pre>';
}

附言。我为我的英语感到抱歉。

关于php - 如何改进 var_dump 以显示变量名并将变量值放在 <pre> 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14454725/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com