如何在数组中存储变量?

时间:2011-03-31 08:15:48

标签: php arrays

我将表单提交中的数据存储在名为$post_data的变量中。当我print_r($post_data);时,我得到以下数组:

Array
(
    [element_3] => John Doe
    [element_2] => john@example.com
    [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问题,我是否需要在Name和Email数组之间使用另一个逗号(,)?

谢谢!

2 个答案:

答案 0 :(得分: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. john@example.com
    );
}

这将键/标签对的存储/映射与处理它的部分分开,使将来更容易维护和修改。

答案 1 :(得分: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'];