将数组输出到函数内的字符串


output array to strings inside function

我有一个基于用户输入运行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