将数组元素输出为函数参数内的变量

时间:2018-08-23 21:33:09

标签: php arrays function

假设我有以下数组,如何将其输出为变量?

$required = array('fname', 'email','lname');

例如这样的例子:$fname,$email,$lname

我想将该数组作为函数参数输出(具有确切的顺序)

像这样:  $mymail=smtpmailer($to, [required array here]);

所以我只想编辑数组,该元素将作为变量动态地解析到函数的参数中

4 个答案:

答案 0 :(得分:2)

假设您要传递存储在变量中的值,这些变量的名称由$required 中的元素标识,则将是这样的(使用最新的PHP版本)。

$fname = "John"; 
$email = "john@example.com";
$lname = "Doe";

$mymail = smtpmailer($to, ...array_values(compact(...$required)));

但是,如果您想将$required传递到smtpmailer()函数中,那么您想要

$required = ["John", "john@example.com", "Doe"]; 
$mymail = smtpmailer($to, ...$required);

答案 1 :(得分:1)

所以您要创建动态变量。

假设您使用的是关联数组:

cd "d:\temp\"
for /r %%i in (*.xlsx) do "C:\temp\cnv.exe" "%%i"........ "-layout"?

以下是创建$required = array( "fname" => "First name", "lname" => "Last name", "email" => "someone@example.com" ); $fname$lname变量的方法:

$email

现在,您可以使用名称来引用变量,例如:

foreach ($required as $key => $value) {
    ${$key} = $value;
}

答案 2 :(得分:0)

如果数组没有键并且始终处于相同顺序,则可以使用语言构造list

例如:

$required = array('John', 'joh.doe@example.com','Doe');
list($fname, $email, $lname) = $required;
$mymail = smtpmailer($to, $fname,$email,$lname);

答案 3 :(得分:0)

如果您希望这些文本元素“ to”,“ fname”,“ lname”和“ email”成为值旁边的关联数组的键,如下面的示例所示,可以按以下方式使用“ extract”函数

$required = array('to'=>'bobmartin@gmail.com','fname'=>'Bob', 'email'=>'grags@gmail.com','lname'=>'Martin');
extract($required);
$mymail=smtpmailer($to, $fname,$email,$lname);

否则,如果您已经在$ to,$ fname,$ email和$ lname变量的顶部定义了值,并且想动态地使这些字符串成为变量并需要传递给函数,则应使用eval函数可将每个字符串动态转换为变量,并使用call_user_func_array如下动态传递这些值

$required = array('to','fname', 'email','lname');
$inputar = array();
foreach($required as $el)
       array_push($inputar,eval('return $'. $el . ';'));
call_user_func_array("smtpmailer", $inputar);