无法第二次调用php函数
这段代码是不言自明的。在我调用该函数并使其正常工作后,其他调用将失败:无法第二次调用php函数,php,Php,这段代码是不言自明的。在我调用该函数并使其正常工作后,其他调用将失败: <?php function htmlFilter_array(&$html_array) { function nested_clean(&$value) { $value = htmlentities($value, ENT_QUOTES, "UTF-8"); } array_walk_recursive($html_array, 'nested_cl
<?php
function htmlFilter_array(&$html_array)
{
function nested_clean(&$value)
{
$value = htmlentities($value, ENT_QUOTES, "UTF-8");
}
array_walk_recursive($html_array, 'nested_clean');
}
$arr1=array("id"=>"1");
echo "line 1 <br/>";
$arr2=array("id"=>"2");
echo "line 2 <br/>";
$arr3=array("id"=>"3");
echo "line 3 <br/>";
htmlFilter_array($arr1);
echo "line 4 <br/>";
htmlFilter_array($arr2);
echo "line 5 <br/>";
htmlFilter_array($arr3);
echo "line 6 <br/>";
?>
为什么第5行和第6行不能运行?实际上,在开发代码时,您应该显示错误和警告。它会告诉你问题出在哪里
E_ERROR : type 1 -- Cannot redeclare nested_clean() (previously declared in main/code_145461.php:5) -- at line 5
通过将函数定义嵌套在另一个函数中,可以重新定义函数
我不知道你为什么要这样嵌套你的函数
试一试
实际上,您应该在开发代码时显示错误和警告。它会告诉你问题出在哪里
E_ERROR : type 1 -- Cannot redeclare nested_clean() (previously declared in main/code_145461.php:5) -- at line 5
通过将函数定义嵌套在另一个函数中,可以重新定义函数
我不知道你为什么要这样嵌套你的函数
试一试
第一:打开错误报告。如果PHP不告诉您什么时候东西坏了,您就无法编程 回答您的问题:您只能定义一次函数。第二次是因为您试图重新定义函数而中断。最简单的方法是不嵌套函数,PHP无论如何都不允许嵌套这样的函数(它都在全局范围内) 替代解决方案:
function htmlFilter_array(&$html_array)
{
$nested_clean = function(&$value)
{
$value = htmlentities($value, ENT_QUOTES, "UTF-8");
};
array_walk_recursive($html_array, $nested_clean);
}
第一:打开错误报告。如果PHP不告诉您什么时候东西坏了,您就无法编程 回答您的问题:您只能定义一次函数。第二次是因为您试图重新定义函数而中断。最简单的方法是不嵌套函数,PHP无论如何都不允许嵌套这样的函数(它都在全局范围内) 替代解决方案:
function htmlFilter_array(&$html_array)
{
$nested_clean = function(&$value)
{
$value = htmlentities($value, ENT_QUOTES, "UTF-8");
};
array_walk_recursive($html_array, $nested_clean);
}
函数嵌套_clean(&$value)
{
$value=htmlentities($value,ENT_引号,“UTF-8”);
}
函数htmlFilter_数组(&$html_数组)
{
数组_walk_recursive($html_数组,'nested_clean');
}
$arr1=数组(“id”=>“'1”);
回显“第1行
”;
$arr2=数组(“id”=>“'2”);
回音“第2行
”;
$arr3=数组(“id”=>“'3”);
回音“第3行
”;
htmlFilter_阵列($arr1);
回声“第4行
”;
htmlFilter_阵列($arr2);
回声“第5行
”;
htmlFilter_阵列($arr3);
回声“第6行
”;
印刷费($arr1);
为什么不使用上面的代码
否则,您可以使用闭包函数。函数嵌套\u clean(&$value)
{
$value=htmlentities($value,ENT_引号,“UTF-8”);
}
函数htmlFilter_数组(&$html_数组)
{
数组_walk_recursive($html_数组,'nested_clean');
}
$arr1=数组(“id”=>“'1”);
回显“第1行
”;
$arr2=数组(“id”=>“'2”);
回音“第2行
”;
$arr3=数组(“id”=>“'3”);
回音“第3行
”;
htmlFilter_阵列($arr1);
回声“第4行
”;
htmlFilter_阵列($arr2);
回声“第5行
”;
htmlFilter_阵列($arr3);
回声“第6行
”;
印刷费($arr1);
为什么不使用上面的代码
否则您可以使用关闭
功能。我认为您应该首先打开错误报告。
但是从代码来看,我100%确信第5-6行不会产生任何输出,因为在htmlFilter\u数组中
它将显示一些错误,如无法重新声明嵌套函数\u clean
我认为您应该首先打开错误报告。
但是从代码来看,我100%确信第5-6行不会产生任何输出,因为在htmlFilter\u数组中
它将显示一些错误,如无法重新声明嵌套的函数\u clean
问题是您使用嵌套函数,函数会一次又一次地重新声明
function nested_clean(&$value)
{
$value = htmlentities($value, ENT_QUOTES, "UTF-8");
}
function htmlFilter_array(&$html_array)
{
array_walk_recursive($html_array, 'nested_clean');
}
解决方案是在外部声明函数,即使您反复调用它。问题在于您使用嵌套函数,函数会一次又一次地重新声明
function nested_clean(&$value)
{
$value = htmlentities($value, ENT_QUOTES, "UTF-8");
}
function htmlFilter_array(&$html_array)
{
array_walk_recursive($html_array, 'nested_clean');
}
解决方案是在外部声明函数,即使您正在重复调用它。尝试分离函数并调用htmlFilter\u数组中的嵌套\u clean。。。每次调用htmlFiler\u数组时声明它是没有用的尝试分离函数并调用htmlFilter\u数组中的嵌套\u clean。。。每次调用htmlFiler_array时都声明它是没有用的。如果不想在其他函数之外访问该函数,可以使用匿名函数。(AKA closure)如果您不想在其他函数之外访问该函数,可以使用匿名函数。(又名闭包)如何修复?有什么方法可以破坏后生存函数吗?我只是想将嵌套函数与php的其余部分隔离开来。如何修复?有什么方法可以破坏after living函数吗?我只是想将嵌套函数与php的其余部分隔离开来。我可以解释所有必需的php.ini设置,或者你可以在10秒内搜索它并自己找到:)你可以做到!嗯,我使用的是错误报告(E_ALL)
,它不起作用。显示错误也需要打开,你应该在php.ini中修复它,而不是在你的脚本中。我可以解释所有需要的php.ini设置,或者你可以在10秒内搜索它并自己找到:)你可以做到!嗯,我使用的是错误报告(E\u ALL)
,它不起作用。显示错误也需要打开,你应该在php.ini中修复它,而不是在脚本中。