2017-01-09 224 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的假設是否合理。如果您可以控制表單,則可以考慮更改輸入名稱以定義更方便的數組結構。例如,