2011-03-31 100 views
2

我有一个表单提交数据存储在一个名为$post_data的变量中。当我做print_r($post_data);我得到下面的数组:如何在数组中存储变量?

Array 
(
    [element_3] => John Doe 
    [element_2] => [email protected] 
    [element_14] => City 
    [element_15] => Country 
    [form_id] => 1 
    [submit] => Submit 
); 

我要存储一些另一个数组中的字段传递给另一个脚本。我的代码会在下面工作吗?如果不是,我该如何解决?

$submitted_data = array(
    'Fields' => array(
     array(
      'Key' => 'Name', 
      'Value' => $post_data['element_3'] 
     ) 
     array(
      'Key' => 'Email', 
      'Value' => $post_data['element_2'] 
     ) 
    ) 
) 

此外,PHP noob问题,我需要的姓名和电子邮件阵列之间另一个逗号(,)?

谢谢!

+0

'我是否需要名称和电子邮件数组之间的另一个逗号(,)?“是的,你确实需要。除此之外,您的解决方案看起来很好。 – 2011-03-31 08:18:23

+2

'我的代码下面的工作?'你甚至试图在问之前测试它吗?是的,你需要逗号,因为它是数组元素之间的分隔符。 – 2011-03-31 08:19:58

+0

我确实认同Serty。不要害怕尝试。并确保你已经启用了显示错误(只在你的测试环境中!),并设置'error_reporting'到一个体面的水平('E_ALL')。 – 2011-03-31 08:21:51

回答

1

我不完全知道你为什么会想这样做,但根据字段名称,你可以考虑使用循环来帮助自动化整个过程。

$field_map = array(
    'element_3' => 'Name', 
    'element_2' => 'E-mail', 
    'element_14' => 'City', 
    'element_15' => 'Country' 
); 

$submitted_data = array('fields' => array());  
foreach ($field_map as $key => $label) 
{ 
    $submitted_data['fields'][] = array(
     'key' => $key,    // e.g. element_2 
     'label' => $label,   // e.g. E-mail 
     'value' => $post_data[$key] // e.g. [email protected] 
    ); 
} 

此分开,其处理它的部分密钥/标签对存储/映射,使得它更容易维护和在未来修改。

+0

谢谢,这有助于使我的代码更高效 – blogjunkie 2011-04-02 13:17:33

0

另一种方法可能是(取决于如何“修复”第二个脚本,如果你可以改变它)。

$submitted_data['Name']=$post_data['element_3']; 
$submitted_data['Email']=$post_data['element_2']; 

要得到的结果更像是一个在你的问题:

$submitted_data['Fields']['0']['Key']='Name'; 
$submitted_data['Fields']['0']['Value']=$post_data['element_3']; 
$submitted_data['Fields']['1']['Key']='Email'; 
$submitted_data['Fields']['1']['Value']=$post_data['element_2']; 
+0

谢谢,这正是我需要的! – blogjunkie 2011-03-31 09:50:20