Php 数组到字符串的转换,并且只能通过引用传递变量

Php 数组到字符串的转换,并且只能通过引用传递变量,php,Php,我对php没有经验(我是新手) 我试图使用此代码查找变量的名称,但我一直得到: 行的数组到字符串转换: $aDiffKeys = array_keys (array_diff_assoc ($aDefinedVars_0, $aDefinedVars)); 当我使用 var_name($a, get_defined_vars()); 我怎样才能使这些信息消失?因为整个代码都在工作(我得到了所需的输出) 这是密码 <?php function var_name (&$iVar,

我对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');
?>

只能通过引用传递变量

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

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

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

数组到字符串的转换通知从PHPV5.4.0开始。由于
array\u diff\u assoc()
不会递归搜索,因此它会通知您,它发现数组中的一个值也是数组,并且必须将其转换为字符串

下面是一个关于如何对多维数组使用
array\u diff\u assoc()
的示例


或者,如果您只是比较键,那么将
array\u diff\u assoc()
切换为
array\u diff\u key()
将符合您的目的?

您可以发布完整的代码吗?请确保使用了正确的类型。即使PHP有时可以强制转换变量类型,但用这种方式操作是一种不好的做法。我不知道从哪里开始需要它。如果您可以键入
var\u name($a)
,那么您已经知道变量名:“a”!我得到的变量名是string!我得到的变量名是字符串这就是函数的作用?你到底想在这里实现什么?在我的情况下,它不起作用,我得到了未定义的偏移量:0,这意味着它没有找到我的变量名…我还得到了数组到字符串转换+1的有用链接。但请看下面的解决方案:请注意,该链接上的代码具有严格匹配,而整个php和具有==。如果将数组_diff_assoc()交换为数组_diff_assoc_recursive(),请注意检查。