PHP数组 - 从数组创建一个数组?

时间:2011-07-02 07:10:31

标签: php arrays post multidimensional-array

你好,我有一个看起来像这样的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 
)

我想创建一个新数组,我将第一个email_address,firstname和surname放入一个数组中,处理该数据,然后继续查看下一个电子邮件地址,名字和姓氏。

这可能吗?我试过这段代码,

$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 :(得分:0)

你可以尝试:

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

答案 1 :(得分:0)

$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]
  );
}

答案 2 :(得分:0)

您只需要将元素重新排序到$_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中不是数组的元素将被忽略并过滤掉。