Php 将多个表单数组合并为一个数组

Php 将多个表单数组合并为一个数组,php,arrays,Php,Arrays,我有正在提交的上述数组。该输入是由动态表行生成的多个字段的集合。如何将其分组为1(一)个数组,以便保存在数据库中?像这样: ["trnx_date"]=> array(2) { [0]=> string(10) "2017-01-10" [1]=> string(10) "2017-01-10" } ["curr_from"]=> array(2) { [0]=> string(3) "USD"

我有正在提交的上述数组。该输入是由动态表行生成的多个字段的集合。如何将其分组为1(一)个数组,以便保存在数据库中?像这样:

  ["trnx_date"]=>
  array(2) {
    [0]=>
    string(10) "2017-01-10"
    [1]=>
    string(10) "2017-01-10"
  }
  ["curr_from"]=>
  array(2) {
    [0]=>
    string(3) "USD"
    [1]=>
    string(3) "PHP"
  }
  ["curr_from_amt"]=>
  array(2) {
    [0]=>
    string(8) "4,000.00"
    [1]=>
    string(8) "3,000.00"
  }
  ["curr_to"]=>
  array(2) {
    [0]=>
    string(3) "GBP"
    [1]=>
    string(3) "SAR"
  }
  ["curr_to_amt"]=>
  array(2) {
    [0]=>
    string(8) "3,000.00"
    [1]=>
    string(8) "2,000.00"
  }
  ["amount"]=>
  array(2) {
    [0]=>
    string(8) "7,000.00"
    [1]=>
    string(8) "5,000.00"
  }
以上所有情况下,我们的人口构成如下:

[cust_row] => array(
  'tranx_date' => "2017-01-10",
  'curr_from' => "USD",
  'curr_from_amt' => "4,000.00",
  'curr_to' => "GBP",
  'curr_to_amt' => "3,000.00",
  'amount' => "7,000.00"
),
[cust_row] => array(
  'tranx_date' => "2017-01-10",
  'curr_from' => "PHP",
  'curr_from_amt' => "3,000.00",
  'curr_to' => "SAR",
  'curr_to_amt' => "2,000.00",
  'amount' => "5,000.00"
),
这个怎么样

$trnx_date = $this->input->post('trnx_date');
$curr_from = $this->input->post('curr_from');
$curr_from_amt = $this->input->post('curr_from_amt');
$curr_to = $this->input->post('curr_to');
$curr_to_amt = $this->input->post('curr_to_amt');
$amount = $this->input->post('amount');

编辑:为$result[$i]

添加了数组检查假设所有子数组具有相同的长度,您可以使用一个简单的
for
循环来迭代其中一个数组的索引,并使用该循环访问该索引处的每个子数组。然后将它们组合到每个客户的关联数组中

// assume $arr is your original data array
$keys = array_keys($arr);
$result = array();
foreach($keys as $key) {
    $vals = $arr[$key];
    foreach($vals as $i =>$val) {
        if (!is_array($result[$i]) {
            $result[$i] = array();
        }
        $result[$i][$key] = $val;
    }
}
var_dump($result);
$result=array();
$keys=数组\ U键($array);
$len=count($array[$keys[0]]);//获取其中一个子数组的长度
对于($i=0;$i<$len;$i++){
$new=array();
foreach($k){
$new[$k]=$array[$k][$i];
}
$result[]=$new;
}
$arr=array(
“trnx_日期”=>数组(“2017-01-10”、“2017-01-10”),
'curr_from'=>数组('USD','PHP'),
'curr\u from\u amt'=>数组('4000.00','3000.00'),
'curr_to'=>数组('GBP','SAR'),
'curr_to_amt'=>数组('3000.00','2000.00'),
“金额”=>数组('7000.00'、'5000.00')
);
$arr_out=array();
$arr\u keys=数组\u keys($arr);
对于($i=0;$i$value){
$new_arr[$value]=$arr[$value][$i];
}
$arr_out[]=$new_arr;
}
var_dump($arr_out);

希望有帮助

你自己试过什么吗?我不明白你想要的那排。为什么没有第二个数组的密钥?嗨,佩鲁玛,对不起,我的错。第二个数组应该有相同的键。【客户行】=>数组(‘交易日期’=>‘2017-01-10’、‘交易金额’=>‘美元’、‘交易金额’=>‘4000.00’、‘交易金额’=>‘GBP’、‘交易金额’=>‘3000.00’、‘金额’=>‘7000.00’)、【客户行】=>数组(‘交易日期’=>‘2017-01-10’、‘交易金额’、‘PHP’、‘交易金额’=>“3000.00”,“curr\u to'=>“SAR”,“curr\u to\u amt'=>“2000.00”,“amount'=>“5000.00”),不能有两个相同键的元素。嗨,Barmar,字段如下:trnx\u date=$this->input->post('trnx\u date');$curr\u from=$this->input->post('curr\u from');$curr\u from\u from=$this input->post('curr\u from'))$curr\u to=$this->input->post('curr\u to');$curr\u to\u amt=$this->input->post('curr\u to\u amt');$amount=$this->input->post('amount'));以上所有内容都是从表单提交中填充的问题看起来所有输入都在一个关联数组中,而不是单独的变量。看起来您使用的是CodeIgniter。返回的数组的性质将取决于表单的构造方式,因此不能从这个细节中说明您刚刚提供的Barmar的assumEclipse是合理的。如果您对窗体有控制,您可以考虑更改输入名称来定义更方便的数组结构。例如,您是我的救星,这就是我正在寻找的。非常感谢。
$arr = array(
    'trnx_date' => array('2017-01-10', '2017-01-10'),
    'curr_from' => array('USD', 'PHP'),
    'curr_from_amt' => array('4,000.00', '3,000.00'),
    'curr_to' => array('GBP', 'SAR'),
    'curr_to_amt' => array('3,000.00', '2,000.00'),
    'amount' => array('7,000.00', '5,000.00')
);

$arr_out = array();
$arr_keys = array_keys($arr);

for($i = 0; $i < count($arr[$arr_keys[0]]); $i++) {
    $new_arr = array();
    foreach($arr_keys as $key => $value) {
        $new_arr[$value] = $arr[$value][$i];
    }
    $arr_out[] = $new_arr;
}

var_dump($arr_out);
$arr = array(
    'trnx_date' => array('2017-01-10', '2017-01-10'),
    'curr_from' => array('USD', 'PHP'),
    'curr_from_amt' => array('4,000.00', '3,000.00'),
    'curr_to' => array('GBP', 'SAR'),
    'curr_to_amt' => array('3,000.00', '2,000.00'),
    'amount' => array('7,000.00', '5,000.00')
);

$arr_out = array();
$arr_keys = array_keys($arr);

for($i = 0; $i < count($arr[$arr_keys[0]]); $i++) {
    $new_arr = array();
    foreach($arr_keys as $key => $value) {
        $new_arr[$value] = $arr[$value][$i];
    }
    $arr_out[] = $new_arr;
}

var_dump($arr_out);