2016-08-31 10 views
0

Iが配列PHPでforeachループを使って多次元配列を作成するには?

$fname = $_POST['first_name']; 
$lname = $_POST['last_name']; 
$job = $_POST['job']; 
$desc = $_POST['desc']; 
$photo = $_POST['image_url']; 

$memberdata = Array(
      'first_name' => $fname, 
      'last_name' => $lname, 
      'job' => $job, 
      'desc' => $desc, 
      'image_url' => $photo 
     ); 

、それは以下のように印刷し、この配列をエコーにフォームの値をとります。 目標を達成するためにコードをどのように修正する必要がありますか? 私が望む結果を得る他の方法はありますか? メンバーフォームはjqueryを使用して動的に生成されます。 そして、私は以下に述べたメンバのバイス配列を取得したいと思います。

Array 
(
    [first_name] => Array 
     (
      [0] => Member1 
      [1] => Member2 
      [2] => Member3 
     ) 

    [last_name] => Array 
     (
      [0] => Member1 
      [1] => Member2 
      [2] => Member3 
     ) 

    [job] => Array 
     (
      [0] => President 
      [1] => MD 
      [2] => CEO 
     ) 

    [desc] => Array 
     (
      [0] => President of 
      [1] => MD of 
      [2] => CEO of 
     ) 

    [image_url] => Array 
     (
      [0] => 
      [1] => 
      [2] => 
     ) 

) 

上記のアレイから特定のアレイを作成するにはどうすればよいですか? 目標を達成するためにコードをどのように修正する必要がありますか? これは私が欲しいものです。

$result = array(); 
foreach($members as $member) { 
    $result['firstname'][] = $member['firstname']; 
    $result['last_name'][] = $member['last_name']; 
    //etc 
} 

そして、それはこのようなものでなければなりません:

Array 
(
    [0] => Array 
    (
     [first_name] => Member1 
     [last_name] => Member1 
     [job] => President 
     [desc] => President of 
     [image_url] => 
    ) 

    [1] => Array 
    (
     [first_name] => Member2 
     [last_name] => Member2 
     [job] => MD 
     [desc] => MD of 
     [image_url] => 
    ) 

    [2] => Array 
    (
     [first_name] => Member3 
     [last_name] => Member3 
     [job] => CEO 
     [desc] => CEO of 
     [image_url] => 
    ) 
) 
+1

'foreach'ループPHPコード – Tumtum

+1

そして、どのようにあなたは、この問題を解決しようとしたんでしたし、うまくいきませんでしたを追加してください? –

答えて

3

私の推測では、あなたのforeachループでは、このようになります

:サンプルコードに基づいて

$result = array(); 
foreach($members as $member) { 
    $result[] = array(
     'firstname' => $member['firstname'], 
     'last_name' => $member['last_name'], 
     'job' => $member['job'], 
     'desc' => $member['desc'], 
     'image_url' => $member['image_url'] 
    ); 
} 

更新

POSTフィールドはarraですすべてのフィールドがすべてのメンバーに転記されていることを確認する必要があります。forループは同じ金額のすべてのフィールドに基づいているためです。

$fname = $_POST['first_name']; 
$lname = $_POST['last_name']; 
$job = $_POST['job']; 
$desc = $_POST['desc']; 
$photo = $_POST['image_url']; 

$memberdata = array(); 

// we iterate the firstname field and access the same indexes from the other fields. The $i starts with 0 and gets incremented until it iterated over all the firstnames 
for($i = 0; $i < count($fname); $i++) { 
    $memberdata[] = array(
     'first_name' => $fname[$i], // we access the firstname at the current index 
     'last_name' => $lname[$i], 
     'job' => $job[$i], 
     'desc' => $desc[$i], 
     'image_url' => $photo[$i] 
    ); 
} 

var_dump($memberdata); 
+0

@Tumtumに感謝しますが、その値がない空の配列しか表示されません。私は私の投稿を編集した、あなたはそれから任意のアイデアを得ることができるかもしれません。 –

+0

確かに、私の答えを更新! – Tumtum

関連する問題