PHP-PHP二维数组合并,根据某个key合并

发布于 2017-01-23 13:33:27 字数 566 浏览 1505 评论 3

最终解决方案:

/**
*
* @param type $v 要传入的组合阵列
* @param type $keyname 对应的KEY名称。
* @param type $valname 要写入的值KEY名称
* @param type $s 重组译的阵例。预设空值。
*/
function test($v,$keyname,$valname,$s=Array())
{
foreach($v AS $_k => $d)
{
$s[$d[$keyname]][$valname] = $d[$valname];
}
return $s;
}

$key = 'server_id';
foreach($arr1 as $k=>$v){
$arr[$v['server_id']] = $v;
}
$data = test($arr2,$key,'arr2',$arr);
$data = test($arr3,$key,'arr3',$data);

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

浮生未歇 2017-09-17 05:54:35

 $result = array();
foreach($arr1 as $key=>$value)
{
$tmp = array_merge_recursive($value,$arr2[$key],$arr3[$key]);
$tmp['server_id'] = $value['server_id'];
$result[] = $tmp;
}
var_dump($result);

不优雅,但实现了,你看能用么

泛泛之交 2017-06-10 04:35:20

简单的方式:

$a = array_map("array_merge",$arr1,$arr2,$arr3,.....);

上边的要求每个数组都长度都一样,如果$arr1,$arr2 ...长度不一样,则使用下边的方法:

$a = array_map(null,$arr1,$arr2,$arr3,......);
foreach($a as &$val) {
$val = call_user_func_array('array_merge',array_filter($val));
}
print_r($a);

晚风撩人 2017-04-22 02:22:14

<?php
$a[0][1] = "a";
$a[0][2] = "b";
$a[0][3] = "c";
$a[0][4] = "d";
$a[1][1] = "aa";
$a[1][2] = "bb";
$a[1][3] = "cc";
$a[1][4] = "dd";

$b[0]["a"] = "1";
$b[0]["b"] = "2";
$b[0]["c"] = "3";
$b[0]["d"] = "4";
$b[1]["a"] = "11";
$b[1]["b"] = "22";
$b[1]["c"] = "33";
$b[1]["d"] = "44";
$b[1][4] = "dd";

$c["a"] = $a;
$c["b"] = $b;

$d = array();
foreach($c as $k){
if (!empty($k))
$d = array_merge ( $d, $k );
}

print_r($d);

/*
返回:
Array
(
[0] => Array
(
[1] => a
[2] => b
[3] => c
[4] => d
)

[1] => Array
(
[1] => aa
[2] => bb
[3] => cc
[4] => dd
)

[2] => Array
(
[a] => 1
[b] => 2
[c] => 3
[d] => 4
)

[3] => Array
(
[a] => 11
[b] => 22
[c] => 33
[d] => 44
[4] => dd
)

)
*/

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文