【发布时间】:2012-05-14 12:43:11
【问题描述】:
假设我的 $_POST 变量如下所示:
<?php
Array
(
[user_ID] => 65
[action] => editpost
[originalaction] => editpost
[post_author] => 154
[empl_bd_dd] => 6
[empl_bd_mm] => 5
[empl_bd_yy] => 1987
[empl_gen] => 1
[empl_height] => 155
[empl_weight] => 61
[empl_arra] => 2
[save] => Update
[post_it] => 2
[empl_pay] => J77
[empl_cust] => Married
[empl_lang] => Array
(
[0] => EN
[1] => FR
)
[empl_rent] => 1
[name] => Jimmy Nathan
[empl_text] => Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec sed interdum leo. Sed et elit quam, tempor placerat neque. Nullam sapien odio, egestas iaculis dictum ut, congue ullamcorper tellus.
[empl_sk_0] => 6
[empl_sk_1] => 7
[empl_sk_2] => 5
)
?>
如您所见,我在所有表单变量前面都加上了empl_。不必一一指定所有这些,我如何以最低成本希望优雅的方式将我的所有表单变量从$_POST 放入一个数组中?有没有我可以使用的 PHP 数组函数或它们的组合?
就像在CSS 中一样,您可以使用[class*="empl_"] 选择以empl 开头的类的所有元素,有没有办法可以使用PHP 中的数组键来做到这一点,例如
$empl_post = $_POST['empl_*']
编辑答案 - 对@chris 的答案进行修正:$_POST 必须是array_intersect_key 的第一个参数,例如:
$empl_POST = array_intersect_key($_POST, array_flip(preg_grep('/^empl_/', array_keys($_POST))));
【问题讨论】:
-
感谢所有答案。在下面选择了@chris 的答案。正是我要找的。再次感谢大家,你们都摇滚。