2014-10-18 48 views
2

我下面程序的面向对象编程PHP获取基于结果在函数给出的参数

function getTest($p1='', $p2='', $p3='') 
{ 
return ('$p1='.$p1.' : $p2='.$p2.' : $p3='.$p3); 
} 

而不是下面的函数调用,

echo getTest($p1='para 1', '', ''); 
echo getTest('', $p2='para 2', ''); 
echo getTest('', $p2='para 2', $p3='para 3'); 

我想用下面的方法

echo getTest($p1='para 1'); 
echo getTest($p2='para 2'); 
echo getTest($p3='para 3'); 

当前结果

$p1=para 1 : $p2= : $p3= 
$p1=para 2 : $p2= : $p3= 
$p1=para 3 : $p2= : $p3= 

预期结果

$p1=para 1 : $p2= : $p3= 
$p1= : $p2=para 2 : $p3= 
$p1= : $p2= : $p3=para 3 

?我怎样才能给出了基于该参数的结果呢?

我的目标是该函数应该识别变量名并继续,而不是继续使用参数顺序。

+0

而不是单个值发送数组值来实现这一目标,现有和行动相应 – 2014-10-18 06:16:10

回答

3
function getTest($args = array()) 
{ 
    $arg1 = isset($args['arg1']) ? $args['arg1'] : ""; 
    $arg2 = isset($args['arg2']) ? $args['arg2'] : ""; 
    $arg3 = isset($args['arg3']) ? $args['arg3'] : ""; 

    return ('$p1='.$arg1.' : $p2='.$arg2.' : $p3='.$arg3); 
} 

// now simply call function.. 
$para= array("arg1"=>"para 1", 
      "arg2"=>"para 2", 
      "arg3"=>"para 3"); 

$para2= array("arg2"=>"para 2", 
       "arg3"=>"para 3"); 

$para3= array("arg3"=>"para 3"); 
echo getTest($para); 
echo getTest($para2); 
echo getTest($para3); 
+1

我想要的东西像函数应该识别变量名称并继续。 – 2014-10-18 07:06:02

+0

我编辑它检查它 – 2014-10-18 11:37:19

2

你可以通过传递一个数组作为类的参数在下面的例子中

function foo($args) 
{ 
    print "named_arg1 : " . $args["named_arg1"] . "\n"; 
    print "named_arg2 : " . $args["named_arg2"] . "\n"; 

} 

foo(array("named_arg1" => "arg1_value", "named_arg2" => "arg2_value")); 

PHP不支持命名参数

相关问题