我有这个数组:
$main = array("Name","Age");
$fname =array("Peter","Ben","Joe");
$age = array("35","37","43");
我需要结合它。输出数组必须是:
[0] =>
[Name] => [Peter]
[Age] => [35]
[1] =>
[Name] => [Ben]
[Age] => [37]
[2] =>
[Name] => [Joe]
[Age] => [43]
等等。我试过了array_combine,但是它给出了一个错误,因为$main
只包含两个值,array_merge组合数组并不是我想要的,它将任何下一个数组添加到结果数组的末尾。
如何解决我的问题?求救!
答案 0 :(得分:7)
这样的事情应该做:
$result = array_map(
function () use ($main) {
return array_combine($main, func_get_args());
},
$fname,
$age
);
PHP 5.6+为回调提供了更好的语法:
function (...$vals) use ($main) {
return array_combine($main, $vals);
}
虽然我首先要指出这是一个相当奇特的数据集,但你应该看看是否有什么可以之前来获取你的数据更好的形状,所以你不需要像这样向后弯腰。
答案 1 :(得分:1)
使用array_map
和array_combine
函数的解决方案:
$result = array_map(function($v) use($main){
return array_combine($main, $v);
}, array_map(null, $fname, $age));
print_r($result);
使用常规foreach
循环+ array_combine
函数可以实现同样的效果:
$result = [];
foreach ($fname as $k => $v) {
$result[] = array_combine($main, [$v, $age[$k]]);
}
输出:
Array
(
[0] => Array
(
[Name] => Peter
[Age] => 35
)
[1] => Array
(
[Name] => Ben
[Age] => 37
)
[2] => Array
(
[Name] => Joe
[Age] => 43
)
)
答案 2 :(得分:0)
这就是你想要的:
$newArray = [];
$main = array("Name","Age");
$fname =array("Peter","Ben","Joe");
$age = array("35","37","43");
$newArray = array_combine($fname, $age);
$array = [];
foreach($newArray as $key => $value) {
$array[] = [
$main[0] => $key,
$main[1] => $value
];
}
var_dump($array);