PHP массив - создать массив из массива? - PullRequest
0 голосов
/ 02 июля 2011

Здравствуйте, у меня есть POST-массив, который выглядит следующим образом:

Array (
  [email_address] => Array ( 
    [0] => simon@simonainley.info  
    [1] => simon2@simonainley.info 
  ) 
  [firstname] => Array ( 
    [0] => Simon 
    [1] => Simon2 
  ) 
  [surname] => Array ( 
    [0] => Ainley 
    [1] => Ainley2 
  ) 
  [companies_company_id] => NULL,
  [save_user] => Save User 
)

Я хочу создать новый массив, в котором я получу первый адрес электронной почты, имя и фамилию в массив, обработаю эти данные изатем перейдите к следующему адресу электронной почты, имени и фамилии.

Возможно ли это?Я пробовал этот код,

$newArray = array();
    foreach($_POST as $key => $value)  {
    $newArray[] = $value;
}

, однако этот код просто производит это,

Array (
  [0] => Array ( 
      [0] => simon@simonainley.info 
      [1] => simon2@simonainley.info
  )
  [1] => Array ( 
      [0] => Simon 
      [1] => Simon2
  ) [2] => Array ( [0] => Ainley [1] => Ainley2 ) [3] => [4] => Save User ) 1

Что мне нужно сделать?

Ответы [ 3 ]

0 голосов
/ 02 июля 2011
$count = count($_POST['firstname']);
$result = array();
for ($i = 0; $i <= $count; $i ++) {
  $result[] = array(
    'email_address' => $_POST['email_address'][0],
    'firstname' => $_POST['firstname'][0],
    'lastname' => $_POST['lastname'][0]
  );
}

или (если числовые индексы имеют какое-либо значение)

$result = array();
foreach (array_keys($_POST['email_address']) as $index) {
  $result[$index] = array(
    'email_address' => $_POST['email_address'][$index],
    'firstname' => $_POST['firstname'][$index],
    'lastname' => $_POST['lastname'][$index]
  );
}
0 голосов
/ 02 июля 2011

Вам нужно только переупорядочить элементы в массиве $_POST:

$users = array();
foreach($_POST as $key => $values) {
    if (is_array($values)) {
        foreach($values as $index => $value) {
            $users[$index][$key] = $value;
        }
    }
}

С данными, которые вы предоставили, вы получите это в массиве $users:

[0] => Array
    (
        [email_address] => simon@simonainley.info
        [firstname] => Simon
        [surname] => Ainley
    )

[1] => Array
    (
        [email_address] => simon2@simonainley.info
        [firstname] => Simon2
        [surname] => Ainley2
    )

Элементы в $_POST, которые не являются массивом, игнорируются и отфильтровываются.

0 голосов
/ 02 июля 2011

Вы можете попробовать:

foreach($_POST as $key=>$value)
{
    $count=0;
    foreach($value as $val)
    {
        $newArray[$count++]=Array($key=>$val);
    }
}
...