我有一个基于用户输入运行PHP字符串函数的方法。我正在从用户表单中收集所有参数,并将其应用于构建帮助程序并返回数据的方法中。但是,我需要能够在函数构建中将每个数组节点/段作为单独的字符串输出。
因此,用户数据的收集方式如下:
2个参数,1个函数,1个主题
参数:" "和"_"功能:"str_replace"主题:"此测试"
参数被收集为一个数组,最终如下所示:
$parameters(" ", "_")
<-- 阵列
我正在尝试像这样内爆它:
$parameters = "'".implode("','",$parameters)."'";
而这个:
$parameters = implode(',',$parameters);
这"似乎"通过给我来做我需要的:
$parameters = " ,_"
或
$parameters = "' ','_'";
但是当我尝试构建 PHP 字符串函数时,它会失败,因为参数是单个字符串而不是单独的字符串。
我试图像这样将我的数据返回给用户:
$data = $myFunction($parameters, $subject);
return $data;
我无法在函数调用中运行"循环",所以我现在遇到了一堵砖墙。如何计算或知道传递了多少参数,以便我可以根据需要传递它们?
它需要(在这种情况下):
$data = $myFunction($parameter1, $parameter2, $subject);
但这会根据提供的参数和功能而变化。
*编辑*
所以使用var_export,我仍然不知道如何将未知数量的元素插入函数构建中......
var_export给了我多维数组的结果,但我可以通过多种方式获得这些结果。我的问题是尝试将它们插入到此处的函数构建中:
$data = $myFunction( HERE , $subject);
其中"HERE"需要是转储...
我需要能够执行以下操作:
$data = $myFunction(foreach($parameters as $parameter){$parameter.','}, $subject);
(如果这更有意义...
它存在一个内置函数来执行此操作:call_user_func_array()
.此函数要求将所需的函数名称作为第一个参数,并将所有参数作为第二个参数的数组。因此,您必须将$subject
附加到$parameters
并按这种方式调用它:
$function = "str_replace";
$subject = "This Test";
$parameters = [ " " , "_" ];
$parameters[] = $subject;
echo call_user_func_array( $function, $parameters );
将输出:
This_Test
我想您的代码旨在加载多个函数:这样做的主要问题是您将函数参数分为两类(主题和参数),那么连接它的标准是什么?在提供的情况下很简单,但如果"主题"不是最后一个函数参数,你怎么能继续?
如果有一个函数有两个或多个变量参数?
也许你可以做这样的事情:
$function = "str_replace";
$parameters = [ " " , "_", "" ]; // array with ALL default parameters
$replace = [ 2 ]; // array with index of customizable parameters
$subject = [ "This Test" ]; // array with custom parameters
foreach( $subject as $key => $val )
{
$parameters[ $replace[ $key ] ] = $val;
}
echo call_user_func_array( $function, $parameters );
因此,拥有这组参数:
$function = "strpos";
$parameters = [ "My Basical Basic Text" , '', 0 ];
$replace = [ 1, 2 ];
$subject = [ 'Basic' ];
调用你的函数,你将得到:"3"("Basical"的字符串位置),同时以这种方式修改$subject
:
$subject = [ 'Basic', 4 ]; //11
您将获得"11"("基本"的字符串位置)。
另请注意,语言结构不是call_user_func_array()
可调用的。
- 阅读更多 关于 call_user_func_array()
- 阅读更多 关于 call_user_func()
你想要vars/array作为字符串吗?
var_export($data, true)
http://php.net/manual/en/function.var-export.php