2017-01-09 228 views
0
["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" 
    } 

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

[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'); 
+1

你有没有尝试过自己? – Perumal

+0

我不明白所需的行。为什么没有第二个数组的关键? – Barmar

+0

嗨Perumal,对不起我的坏。它应该与第二个阵列具有相同的密钥。 –

回答

0
$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); 

希望它能帮助!

+0

你是我的救星,这是我正在寻找的。非常感谢。 –

+0

很高兴。不客气! :) – Perumal

0

这个怎么样?

// 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); 

编辑:导致[$ i]于

1

假设所有子阵列具有相同的长度增加了$阵列检查,则可以使用一个简单的for循环,对它们中的一个的索引进行迭代,并使用它访问该索引处的每个子数组。然后将它们全部结合到每个客户的关联数组中。

$result = array(); 
$keys = array_keys($array); 
$len = count($array[$keys[0]]); // Get the length of one of the sub-arrays 
for ($i = 0; $i < $len; $i++) { 
    $new = array(); 
    foreach ($keys as $k) { 
     $new[$k] = $array[$k][$i]; 
    } 
    $result[] = $new; 
} 
+0

嗨Barmar, 这些字段是这样的: 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'); 以上全部都是从表单提交填充 –

+0

问题看起来像所有的输入都在关联数组中,而不是单独的变量。 – Barmar

+0

看起来像你使用的是CodeIgniter。你要返回的数组的性质取决于表单是如何构造的,所以你不能从这些细节中说出你刚刚提供的Barmar的假设是否合理。如果您可以控制表单,则可以考虑更改输入名称以定义更方便的数组结构。例如,