例如:
A数组:
Array (
[0] => Array ( [name] => zhangsan [sex] => boy [age]=>20)
[1] => Array ( [name] => lisi [sex] => girl [age]=>30)
[1] => Array ( [name] => wangwu [sex] => renyao [age]=>50)
)
B数组:
Array (
[0] => Array ( [name] => zhangsan [sex] => boy [age]=>30)
[1] => Array ( [name] => lisi [sex] => girl [age]=>20)
[1] => Array ( [name] => wangwu [sex] => girl [age]=>60)
)要求合并后的C数组:
Array (
[0] => Array ( [name] => zhangsan [sex] => boy [age]=>20)
[1] => Array ( [name] => lisi [sex] => girl [age]=>20)
[1] => Array ( [name] => wangwu [sex] => renyao [age]=>50)
)
就是说,合并时, 当这两个二维数组 中的记录的 name 相等时, 那么就返回age小的那个数组的记录作为新的数组的记录
A数组:
Array (
[0] => Array ( [name] => zhangsan [sex] => boy [age]=>20)
[1] => Array ( [name] => lisi [sex] => girl [age]=>30)
[1] => Array ( [name] => wangwu [sex] => renyao [age]=>50)
)
B数组:
Array (
[0] => Array ( [name] => zhangsan [sex] => boy [age]=>30)
[1] => Array ( [name] => lisi [sex] => girl [age]=>20)
[1] => Array ( [name] => wangwu [sex] => girl [age]=>60)
)要求合并后的C数组:
Array (
[0] => Array ( [name] => zhangsan [sex] => boy [age]=>20)
[1] => Array ( [name] => lisi [sex] => girl [age]=>20)
[1] => Array ( [name] => wangwu [sex] => renyao [age]=>50)
)
就是说,合并时, 当这两个二维数组 中的记录的 name 相等时, 那么就返回age小的那个数组的记录作为新的数组的记录
$array1 = array("color" => "red", 2, 4);
$array2 = array("a", "b", "color" => "green", "shape" => "trapezoid", 4);
$result = array_merge($array1, $array2);
print_r($result);
?>//http://cn2.php.net/manual/en/function.array-merge.php
$ar1 = array("color" => array("favorite" => "red"), 5);
$ar2 = array(10, "color" => array("favorite" => "green", "blue"));
$result = array_merge_recursive($ar1, $ar2);
print_r($result);
?>
//http://cn2.php.net/manual/en/function.array-merge-recursive.php/* //output
Array
(
[color] => Array
(
[favorite] => Array
(
[0] => red
[1] => green
) [0] => blue
) [0] => 5
[1] => 10
)
*/
$arr1 = array(
0=>array(
'name'=>'zhangsan',
'sex'=>'boy',
'age'=>20
),
1=>array(
'name'=>'lisi',
'sex'=>'boy',
'age'=>30
),
2=>array(
'name'=>'wangwu',
'sex'=>'boy',
'age'=>40
)
);
$arr2 = array(
0=>array(
'name'=>'zhangsan',
'sex'=>'boy',
'age'=>10
),
1=>array(
'name'=>'lisi',
'sex'=>'boy',
'age'=>20
),
2=>array(
'name'=>'wangwu',
'sex'=>'boy',
'age'=>50
)
);
function getArray($arr1, $arr2) {
$arr3 = array();
for($i=0;$i<count($arr1);$i++) { if ($arr1[$i]['name'] == $arr2[$i]['name']) {
if($arr1[$i]['age'] <= $arr2[$i]['age']) {
$arr3[] = $arr1[$i];
}else {
$arr3[] = $arr2[$i];
}
}
}
return $arr3;
}
print_r(getArray($arr2,$arr1));
?>
/**测试数组一*/
$arr1 = array(
array("name"=>"zhangshan","sex"=>"boy","age"=>20),
array("name"=>"lishi","sex"=>"girl","age"=>30),
array("name"=>"wangwu","sex"=>"renyao ","age"=>50)
);
/**测试数组二*/
$arr2 = array(
array("name"=>"zhangshan","sex"=>"boy","age"=>10),
array("name"=>"lishi","sex"=>"girl","age"=>20),
array("name"=>"wangwu","sex"=>"boy ","age"=>60),
array("name"=>"zhaoliu","sex"=>"boy ","age"=>60)
);
/**测试数组三*/
$arr3 = array(
array("name"=>"zhangshan","sex"=>"boy","age"=>30),
array("name"=>"lishi","sex"=>"girl","age"=>20),
array("name"=>"wangwu","sex"=>"boy ","age"=>60),
array("name"=>"zhaoliu","sex"=>"boy ","age"=>60),
array("name"=>"fuck7","sex"=>"boy ","age"=>30),
array("name"=>"wang8","sex"=>"boy ","age"=>20)
);
$merge_arr = array($arr1,$arr2,$arr3);
$dest_val = array_merge_new($merge_arr);
/**
* 遍历生成新的数组
* **/
function array_merge_new($arr)
{
$dest_arr = get_names_of($arr);
$return_arr_withkey = array();
$return_arr = array();
foreach($arr as $key=>$val_arr)
{
foreach($val_arr as $key_val=>$val_val)
{
if(!isset($return_arr[$val_val["name"]]))
{
$return_arr_withkey[$val_val["name"]] = $val_val;
}else
{
if($val_val["age"] < $return_arr[$val_val["name"]]["age"])
{
$return_arr_withkey[$val_val["name"]] = $val_val;
}
}
}
}
foreach($return_arr_withkey as $key=>$val)
{
$return_arr[]=$val;
}
return $return_arr;
}
/***
* 按指定规则取得相就的健值列表. 当前规则是只要不同就列入键词列表
*/
function get_names_of($arr)
{
$dest_array = array();
foreach($arr as $key=>$val_arr)
{
foreach($val_arr as $key_val=>$val_val)
{
if(!in_array($val_val["name"],$dest_array))
{
$dest_array[]= $val_val["name"];
}
}
}
return $dest_array;
}
array ( 'name' => 'zhangsan', 'sex' => 'boy', 'age' => 20),
array ( 'name' => 'lisi', 'sex' => 'girl', 'age' => 30),
array ( 'name' => 'wangwu', 'sex' => 'renyao', 'age' => 50),
);
$b = array (
array ( 'name' => 'zhangsan', 'sex' => 'boy', 'age' => 30),
array ( 'name' => 'lisi', 'sex' => 'girl', 'age' => 20),
array ( 'name' => 'wangwu', 'sex' => 'renyao', 'age' => 60),
);function foo() {
foreach(func_get_args() as $ar) {
foreach($ar as $v) {
$k = $v['name'];
if(! $r[$k] || ($r[$k]['age'] >= $v['age'])) {
$r[$k] = $v;
}
}
}
return $r;
}
print_r(foo($a, $b));
function getArray() {
$array=func_get_args();
$count=func_num_args();
if($count == 1){
return $array[0];
}else{
$arr1 = $array[0];
$arr2 = $array[1];
$arr3 = array();
$names = array();
foreach($arr1 as $a1) {
foreach($arr2 as $a2) {
if ($a1['name'] == $a2['name']) {
$arr3[] = $a1['age'] <= $a2['age']?$a1:$a2;
$names[$a1['name']] = 1;
break;
}
}
}
foreach($arr1 as $a) {
if(!array_key_exists($a['name'],$names)){
$arr3[] = $a;
}
}
foreach($arr2 as $a) {
if(!array_key_exists($a['name'],$names)){
$arr3[] = $a;
}
}
for($i=2;$i<$count;$i++){
$arr3 = getArray($arr3,$array[$i]);
}
return $arr3;
}
}//Test
$arr1 = array(
array(
'name'=>'zhangsan',
'sex'=>'boy',
'age'=>20
),
array(
'name'=>'lisi',
'sex'=>'boy',
'age'=>30
),
array(
'name'=>'wangwu',
'sex'=>'boy',
'age'=>40
),
array(
'name'=>'test',
'sex'=>'boy',
'age'=>30
)
);
$arr2 = array(
array(
'name'=>'zhangsan',
'sex'=>'boy',
'age'=>10
),
array(
'name'=>'lisi',
'sex'=>'boy',
'age'=>20
),
array(
'name'=>'a2t',
'sex'=>'boy',
'age'=>50
),
array(
'name'=>'wangwu',
'sex'=>'boy',
'age'=>50
)
);
$arr3 = array(
array(
'name'=>'12321312',
'sex'=>'boy',
'age'=>10
),
array(
'name'=>'3333',
'sex'=>'boy',
'age'=>20
)
);
$arr4 = getArray($arr1,$arr2,$arr3);
print_r($arr4);
?>