2017-01-09 3 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)の配列にグループ化してデータベースに保存するにはどうすればよいですか?このように:複数のフォーム配列を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

希望の行がわかりません。なぜ2番目の配列のキーがないのですか? – Barmar

+0

こんにちはPerumal、申し訳ありません私の悪い。 2番目の配列に同じキーがあるはずです。 –

答えて

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

EDIT:$つながるための追加の配列チェック[$ 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'); $額= $ this->入力 - >投稿( '額'); 上記のすべてがフォームサブミッションから入力されています –

+0

質問は、すべての入力が別の変数ではなく連想配列にあるように見えます。 – Barmar

+0

CodeIgniterを使用しているようです。あなたが返す配列の性質は、フォームがどのように構築されるかによって異なりますので、Barmarの前提が合理的であるかどうかをあなたが提供したばかりの詳細からは言えません。フォームを制御できる場合は、より便利な配列構造を定義するために入力名を変更することを検討することもできます。たとえば、

関連する問題