2016-08-31 3 views
0

Когда я беру значение формы в массивеКак создать многомерный массив с использованием цикла foreach в php?

$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] => 
     ) 

) 

Как сделать особый массив из массива выше? Как код должен быть изменен для достижения цели? Это то, что я хочу.

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['firstname'][] = $member['firstname']; 
    $result['last_name'][] = $member['last_name']; 
    //etc 
} 

И это должно быть что-то вроде этого:

$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 ys, поэтому вы должны убедиться, что все поля размещены для каждого члена, поскольку цикл 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

Смежные вопросы