数组到字符串的转换和Only变量应通过引用传递


Array to string conversion and Only variables should be passed by reference

我对php没有经验(我是新手)。

我正在尝试使用此代码http://mach13.com/how-to-get-a-variable-name-as-a-string-in-php找到变量的名称,但我一直得到:

行的数组到字符串转换:

$aDiffKeys = array_keys (array_diff_assoc ($aDefinedVars_0, $aDefinedVars));

当我使用时,我也得到了"只有变量应该通过引用传递"

var_name($a, get_defined_vars());

我怎样才能让这些信息消失?因为整个代码都在工作(我得到了所需的输出)。

这是代码

<?php
function var_name (&$iVar, &$aDefinedVars)
{
foreach ($aDefinedVars as $k=>$v)
    $aDefinedVars_0[$k] = $v;
$iVarSave = $iVar;
$iVar     =!$iVar;
$aDiffKeys = array_keys (array_diff_assoc ($aDefinedVars_0, $aDefinedVars));
$iVar      = $iVarSave;
return $aDiffKeys[0];
}
$a=12;
echo var_name($a,get_defined_vars());
//ini_set('display_errors', '0');
?>

数组到字符串的转换通知在PHP v.4.0中启动。由于array_diff_assoc()不递归搜索,它会通知您,它发现数组中的一个值也是数组,因此必须将其转换为字符串。

下面是一个关于如何将array_diff_assoc()用于多维数组的示例。。。http://nl3.php.net/manual/en/function.array-diff-assoc.php#73972

或者,如果你只是在比较密钥,那么把array_diff_assoc()换成array_diff_key()可能对你的目的有用吗?

只有变量应该通过引用传递

您正在将函数调用的结果作为参数进行传递。您没有传递变量。

$vars = get_defined_vars();
echo var_name($a,$vars);

此外,除非您有意修改其中一个变量,否则不应该将其作为引用传递。这样,所做的任何更改都是函数的本地更改。