试图解析我不想要的$ _POST键名

时间:2010-12-30 15:47:03

标签: php

$post_keys = array_keys($_POST);
$special_keys = array();

for($i=0;$i<count($post_keys);$i++){
    if(strpos($post_keys[$i], "special") !== false){

        $special_keys[] = $post_keys[$i];

    }
}

我有很多关于命名约定的post vars,例如special0,special0_time,special0_duration,special1,special1_time等....我想要做的是找出有多少主要组,所以special0,special1等。我现在的代码搜索了所有具有“特殊”的键名,因此检索的内容比我想要的多。

3 个答案:

答案 0 :(得分:2)

PHP已经为使用类似语法的数组的参数构建了一个数组(例如arg[])。见How do I create arrays in a HTML <form>?

答案 1 :(得分:0)

为便于维护,请尝试以下结构:

$_POST = array(
  'special' => array(
       array('time'=>, 'duration'=>, ''=>),
       array('time'=>, 'duration'=>, ''=>),
       array('time'=>, 'duration'=>, ''=>),
  ),
);

然后你可以做一些像count($ _ POST ['special'])和$ _POST ['special'] [1] ['time']

答案 2 :(得分:0)

Gumbo是正确的,但是如果你仍然需要执行这样的任务,正则表达式可以提供帮助:

if(preg_match('/^(?<key>special[0-9]+)_/ix', $post_keys[$i], $match)){
    $special_keys[] = $match['key'];
}

之后,您可以在array_unique()上运行$special_keys以获取一组论坛。