PHP-以变量名称作为键将变量添加到关联数组

身份不明63

这是我的第一篇文章,对于任何我可能不知道的错误,我深感抱歉。

在过去的几天里,我一直在摆弄表格和POST,在某些情况下我有一个很好奇的问题。

我的基本网络表单中有此代码。我声明了一些变量,如下所示。

<?php
    if (isset($_POST['submit'])) {
    // Form submitted
    $username   = isset($_POST['username'])? $_POST['username']     : "";
    $password   = isset($_POST['password'])? $_POST['password']     : "";
    $email  = isset($_POST['email'])    ? $_POST['email']       : "";
    $country    = isset($_POST['country'])  ? $_POST['country'] : "";
}
?>

我想创建一个form_data以这些变量为元素的数组,因此我插入了以下内容:

<?php
    $form_data = array();

    $form_data['username'] = $username;
    $form_data['password'] = $password;
    $form_data['email']    = $email;
    $form_data['country']  = $country;

    print_r($form_data);
?>

我的问题是,在哪里可以得到相同的结果,PHP中是否有我不知道的方法?变量名将被分配为数组中的键,我不希望像上面的那一部分代码那样手动键入键名。


简而言之,如果我有一个名为的变量$number,我想将其值添加到以'number'(变量名)作为键的数组中。有没有一种方法可以自动执行此操作?

我希望我已经把这个问题弄清楚了。

戴夫

您可以使用compact

$form_data = compact('username', 'password', 'email', 'country');

只要有变量,$username, $password, $email, and $country它就会创建您描述的数组。

compact()在当前符号表中查找具有该名称的变量,并将其添加到输出数组,以使变量名称成为键,而变量的内容变为该键的值。

或者,您可以执行白名单方法:

function array_whitelist($array, $whitelist = array()) {
    return array_merge(array_flip($whitelist), 
                       array_intersect_key($array, array_flip($whitelist)));
}

$form_data = array_whitelist($_POST, array('username', 'password', 'email', 'country'));

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章