2013-04-03 43 views
0

在单一形式的密钥值对,有输入命名为:提取从阵列和基团在PHP阵列

  • foo_name
  • foo_age
  • foo_bday
  • bar_cost
  • bar_date

当我使用post作为方法提交表单后,我想g roup输入成阵列是这样的:

$post = array(
    'foo' => array(), 
    'bar' => array(), 
    'baz' => array() 
) 

使得与“富”启动所有array_keys将被推入“富”阵列等作为其他。课程与各自的价值一起。

这里是我的尝试:

$post = array('foo' => array(), 'bar' => array(), 'baz' => array()); 
echo '<pre>'; 
foreach ($_POST as $key => $value) { 
    if (startsWith($key, 'foo_')) { 
     array_push($post['foo'], $key = $value); 
    } else if(startsWith($key, 'bar_')) { 
    } else if (startsWith($key, 'baz_')) { 
    } 
} 

foreach ($post['foo'] as $key => $value) { 
    echo $key . ' = ' . $value . '<br>'; 
} 

最后foreach语句输出这个

0 = 1111 
1 = 1112 
2 = 210 

而不是有其array_keys的的indeces如果$key产生哪里哪里输出

回答

2
$post = array(); 

foreach($_POST as $key => $value) { 
    $key = explode('_', $key); 
    $post[$key[0]][$key[1]] = $value; 
} 

echo '<pre>'; 
print_r($post); 
echo '</pre>'; 

这是一个phpFiddle

0

如果您可以根据需要命名输入字段,则可以从头开始将它们命名为name="foo[name]"等 - 这会使您的数组结构相应,而无需使用其他代码自行构造数据。