PHP将多个数组合并为一个键

时间:2014-07-10 14:27:50

标签: php arrays

我实际上迷路了,不知道如何解释这个问题。

假设我有三个数组

$name = array('mark', 'jones', 'alex');
$age  = array(12, 23, 34);
$country = array('USA', 'UK', 'Canada');

我在寻找的是:

array(
0 => array(
  'name' => 'mark',
  'age' => 12,
  'country' => 'USA'
  )
1 => array(
  'name' => 'jones',
  'age' => 23,
  'country' => 'UK'
  )
2 => array(
  'name' => 'alex',
  'age' => 34,
  'country' => 'Canada'
);

无法找出任何内置的PHP数组函数来处理它。

2 个答案:

答案 0 :(得分:2)

尝试这样的事情     

$result = array();

foreach($name as $key => $value)
{
   $result[$key] = array (
      'name'    => $value, 
      'age'     => $age[$key], 
      'country' => $country[$key]
   );
}
echo '<pre>';

print_r($result);
?>

答案 1 :(得分:1)

您可以在没有任何手动循环的情况下执行此操作:

// array_map with null callback merges corresponding items from each input
$merged = array_map(null, $name, $age, $country);

// walk over the results to change array_map's numeric keys to strings
$keys = ['name', 'age', 'country'];
array_walk(
    $merged, 
    function(&$row) { $row = array_combine(['name', 'age', 'country'], $row); }
);

print_r($merged);

你甚至可以这样写,结果中的键等于变量$name$age$country的名称,而不需要重复:< / p>

// Here "name", "age" and "country" appear only once:
$inputs = compact('name', 'age', 'country');
$merged = call_user_func_array('array_map', [null] + $inputs);
$keys = array_keys($inputs);
array_walk(
    $merged, 
    function(&$row) use($keys) { $row = array_combine($keys, $row); }
);

然而,坦率地说,仅仅for输入(假设它们具有相同数量的项目)可能更具可读性(甚至可能更快),并且可以手动执行。