функциональное программирование — 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

Как я могу получить результат на основе заданного параметра?

Моя цель состоит в том, чтобы функция идентифицировала имя переменной и продолжала, а не продолжала использовать порядок параметров.

2

Решение

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);
3

Другие решения

Вы можете добиться этого, передав массив в качестве аргумента, как в следующем примере

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 не поддерживает именованные аргументы

2

По вопросам рекламы [email protected]