如何使用PHP连接两个数组?

3

我有两个数组:

$browser = array("firefox", "opera", "edge");
$version = array("10", "12", "14");

我希望将它们连接起来,使得最终数组如下所示:
array(0=>array("name"=>"firefox", "version"=>"10"), 1=>array("name"=>"opera", "version"=>"12"), 2=>array("name"=>"edge", "version"=>"14"));

这段代码可以包含任何内置或用户定义的函数。我尝试使用了:

$browser = array("firefox","opera","edge");
$version = array("10","12","14");
foreach($browser as $key=>$values){
  if(!isset($array)){
    $array = array("name"=>$browser[$key],"version"=>$version[$key]);
  }else{
    $array = array($array,array("name"=>$browser[$key],"version"=>$version[$key]));
  }
}
print_r($array);

我得到的输出是:

Array ( [0] => Array ( [0] => Array ( [name] => firefox [version] => 10 ) [1] => Array ( [name] => opera [version] => 12 ) ) [1] => Array ( [name] => edge [version] => 14 ) ) 

请注意,这段代码是用PHP编写的,并且至少适用于包含10个数组长度的数据。


以防这些单独的数组是来自于HTML表单提交(通常在这样的问题中),您可以为输入命名,这样$_POST就已经有了您想要获取的最终数组。 - Don't Panic
2个回答

4

我会直接映射这些数组:

$result = array_map(function($b, $v) {
                        return ['browser' => $b, 'version' => $v];
                    }, $browser, $version);

你也可以使用数组作为动态键:

$keys = ['browser', 'version'];
$result = array_map(function($b, $v) use($keys) {
                        return array_combine($keys, [$b, $v]);
                    }, $browser, $version);

然而,对于您的代码,只需使用if中的第一种格式,并动态添加[]

foreach($browser as $key=>$values){
    $array[] = array("name"=>$browser[$key],"version"=>$version[$key]);
}

这让我想起了https://dev59.com/lXE85IYBdhLWcg3wXCO1,但它不包括键。 - Nigel Ren

0
$result = array();
for ($i=0; $i<count($browser); $i++) {
  $result[] = array($browser[$i], $version[$i]); 
}
return $result;

非常简单 - 只需循环遍历一个数组并使用索引。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接