Php 数组到字符串的转换,并且只能通过引用传递变量
我对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,
$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(),请注意检查。