对不起,这听起来像个菜鸟问题。我想这样做,也许我的问题不明确。
我希望能够传递这样的内容:
make_thumbnail( array( 'width' => 60, 'height' => 40', 'title' => 'my image' ) );
现在上面的行调用已经生成缩略图的函数我没有问题,但我想要灵活性。我的意思是我的函数有这样的变量:
function make_thumbnail($title,$width,$height) {
the code..
echo ...
}
现在你得到了我想做的事情?我希望能够以任何顺序传递变量..它们不必具有相同的顺序标题,宽度,高度..我希望能够在模板中调用函数时指定顺序,因为我放入第一行。
我试图尽可能清楚地表达我的问题,但实际上找不到任何相关内容。
答案 0 :(得分:5)
这种事情?
function make_thumbnail($myarray) {
$sometitle = $myarray["title"]
$somewidth = $myarray["width"]
$someheight = $myarray["height"]
}
答案 1 :(得分:2)
为什么不将数组作为函数参数? e.g。
function make_thumbnail($argsArray) {
echo $argsArray['width'];
}
答案 2 :(得分:2)
您可以在函数中为每个参数创建变量
function make_thumbnail($argsArray) {
$width = $argsArray['width'];
$height = $argsArray['height'];
$title = $argsArray['title'];
// ...plug the rest of your original function here
}
然后你的函数表现完全相同,除了你可以传入一个数组。
答案 3 :(得分:1)
您要求的是对PHP的Reflection语法的描述:
function callWithNamedParams( $funcName, array $args = null )
{
if( is_null( $args ) ) return $funcName();
$f = new ReflectionFunction($funcName);
$input = array();
foreach( $f->getParameters() as $param )
{
array_push( $input, @$args[ $param->getName() ] );
}
return call_user_func_array( $funcName, $input );
}
使用:
function myFunc( $foo, $bar )
{
echo "foo = $foo; Bar = $bar";
}
callWithNamedParams( "myFunc", array( "bar"=>1, "foo"=>2 ) );
您应该将foo = 2; Bar = 1
作为输出。
答案 4 :(得分:0)
您需要定义逻辑以将任何参数作为您想要的参数。数组是你可以使用的最好的东西。但是更改参数会更改签名。 你有点实现多态,但方式错误..