如何将两个对象数组合并并排序()为一个新数组?

时间:2010-12-24 16:25:54

标签: php object

function sortnmerge($array1,$array2)
$all= array_merge_recursive($array1, $array2);
asort($all);

虽然这适用于常规数组,但有没有办法将它应用于两个或更多对象数组?

$ all将是合并两个联系人列表的结果。

提前谢谢你,

JP -

2 个答案:

答案 0 :(得分:0)

    <?php
   function arrayobj_merge_recursive2($paArray1, $paArray2)
{
    if(is_array($paArray2))
    {
        foreach ($paArray2 AS $sKey2 => $sValue2)
        {
            $paArray1[$sKey2] = arrayobj_merge_recursive2(@$paArray1[$sKey2], $sValue2);
        }
    }
    elseif(is_object($paArray2))
    {   
        foreach ($paArray2 AS $sKey2 => $sValue2)
        {
             $paArray1->{$sKey2} = arrayobj_merge_recursive2(@$paArray1->{$sKey2}, $sValue2);
        } 
    } else {
         return $paArray2;
    }  
   return $paArray1;
}
    ?>

答案 1 :(得分:0)

两个步骤:定义一个比较对象的函数,然后调用usort($all, "cmp")。例如:

<?php

function cmp($a, $b) {
    return $a->some_value > $b->some_value;
}

function sortnmerge($arr1, $arr2) {
    $all = array_merge_recursive($arr1, $arr2);
    usort($all, "cmp");
}
?>

当然,我假设您正在尝试合并两个对象数组,然后根据某些属性对它们进行比较。