【问题标题】:how to process a complex php array submitted by a form?如何处理表单提交的复杂php数组?
【发布时间】:2011-07-31 21:48:13
【问题描述】:

我使用 extjs 表单提交了这个数组:

$submittedFormaddress = array('city' => array('london', 'boston', 'paris'),
'country' => array('UK', 'USA', 'FRANCE'),
'zip' => array('22222', '33333', '44444'));

如何从 $submittedFormaddress 自动创建下面的数组?

$clientAddress=array('address1'=>array
('city'=>'london','country'=>'UK','zip'=>'2222'),'address2'=>array
('city'=>'boston','country'=>'USA','zip'=>'3333'),'address3'=>array
('city'=>'paris','country'=>'FRANCE','zip'=>'44444'));

【问题讨论】:

    标签: php arrays forms


    【解决方案1】:

    我建议使用foreach() 循环并向下钻取。

    我试图让每个变量名都具有描述性:

    <?php
    foreach ($submittedFormaddress as $address_part => $part_array) {
        foreach($part_array as $index => $name) {
            $clientAddress['address' . ($index + 1)][$address_part] = $name;
        }
    }
    ?>
    

    Working Example

    【讨论】:

      【解决方案2】:
      for ($i = 0; $i < count($submittedFormaddress['city']); $i++)
      {
          $clientAddress['address'.$i] = array(
              'city' => $submittedFormaddress['city'][$i],
              'country' => $submittedFormaddress['country'][$i],
              'zip' => $submittedFormaddress['zip'][$i],
          );
      }
      

      【讨论】:

      • 我可以建议您使用array_keys 使解决方案不那么脆弱
      • 这将创建以address0 开头的数组键,而不是像OP 指示的address1
      • 感谢您的回答,但请注意我不知道提交了哪些表单字段,因此我不应该手动设置它们。您的代码有助于更深入地理解数组并为它加一个 +。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-02-16
      • 1970-01-01
      • 2016-11-23
      • 2013-03-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多