如何使用foreach获取具有特定名称的所有GET元素

时间:2012-10-12 10:04:25

标签: php loops foreach get

他stackoverflow,

今天我忙于一个功能女巫得到所有具有特定名称的元素。现在我有一个问题就是创建这个函数。具体名称是动态的,因此可以是:“conf_1 = data& conf_2 = data”,但也可以:“conf_1 = data& conf_2 = data& conf_3 = data”

一些代码可以启发你,

foreach($_GET as $key => $value) {
  $a++;
  if (strpos($key, "conf_$a") === 0) {
    $conf[$key] = $value;
  }
}

所以我们假设我们有这个网址,

NAAM =名&安培; DOM =域和ID = 41&安培; conf_1 =数据&安培; conf_2 =数据&安培; conf_3 =数据&安培; this_1 =数据&安培; this_2 = OPT1

现在我试图用foreach循环获取所有conf元素,但我需要$ a参数为1,2 en 3数字。当我试图把所有这些元素拿走时,一个关闭给1 en 2.

如何声明或如何使用不同的循环执行此操作。下一步当然是将元素放入这样的数组中:

 $conf = Array
        (
            [1] => data
            [2] => data
            [3] => data
        )

 $this = Array
        (
            [1] => data
            [2] => data
        )

重要的是编号不是自动完成的。数组中的数字是元素名称中的数字。基本上conf_1 =数据必须变为[1] =>数据

我知道有多种方法可以做到这一点,但我不知道女巫是最好的和最快的方法。我现在这样做的方式完全错了:

for($a = 0; $a < 99; $a++){
    // Get all the data
    $conf = array();
    foreach($_GET as $key => $value) {
        if (strpos($key, "conf_$a") === 0) {
            $conf[$key] = $value;
        }
    }

    $finalconf = array();
    //order all data
    $finalconf[$a] = $conf['conf_' . $a];               

    print_r ($conf);
    print_r ($finalconf);
}

3 个答案:

答案 0 :(得分:1)

你可以尝试

$list = array();
foreach($_GET as $key => $data)
{
    (strpos($key,"conf_") === 0) AND $list[ltrim(strstr($key,"_"),"_")] = $data ;
}
var_dump($list);

输出

array
  1 => string 'data' (length=4)
  2 => string 'data' (length=4)
  3 => string 'data' (length=4)

答案 1 :(得分:1)

如果您使用表单(而不是使用javascript)提交,则可以通过将“conf”输入元素转换为数组来简化它。

<input name="conf[]" ... >
<input name="conf[]" ... >
<input name="conf[]" ... >

提交后,这些将以表格中的数组形式提供;

$_GET['conf'] = array('foo', 'bar', 'baz')

这仅在您提交 html表单时才有用。

答案 2 :(得分:0)

试试这段代码:

$conf = array();
function check( $key ) {
   if( preg_match( '/conf_([0-9]+)/i', $key, $matches ) ) {
        return $matches[ 1 ];
   } else {
        return false;
   }
}

foreach( $_GET as $key => $val ) {
   $index = check( $key ) ;
   if( $index !== false ) {
       $conf[ $index ] = $val;
  }
}