我实际上迷路了,不知道如何解释这个问题。
假设我有三个数组
$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数组函数来处理它。
答案 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
输入(假设它们具有相同数量的项目)可能更具可读性(甚至可能更快),并且可以手动执行。