我有一段像
这样的代码$id = $_POST['id'];
$name = $_POST['name'];
$story = $_POST['story'];
$imgurl = $_POST['imgurl'];
$thisAction = $_POST['thisAction'];
如您所见,我使用的变量名称等于$_POST
数组的键。是否有可能通过循环完成上述操作?
答案 0 :(得分:2)
是的,可以使用variable variables:
foreach($_POST as $key => $value) {
$$key = $value;
}
或使用extract
:
extract($_POST);
但请注意这样做会带来潜在的安全漏洞。
实际上就像simulating PHP's register_globals
directive, which introduces lots of security issues.
您可以分配$_POST
变量的子集,这是一种更安全的方式:
$keys = array('id', 'name', 'story', 'imgurl', 'thisAction');
foreach($keys as $key) {
$$key = $_POST[$key];
}
或使用extract
:
$whitelisted = array_intersect_key($_POST, array('id', 'name', 'story', 'imgurl', 'thisAction'));
extract($whitelisted);