简体   繁体   English

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

[英]How to merge and asort() two object arrays into one new array?

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

While this works for regular arrays, is there a way to apply it to two array of objects or more? 虽然这适用于常规数组,但是有没有办法将其应用于两个或更多对象数组?

$all would be the result of merging both contact lists. $ all将是合并两个联系人列表的结果。

Thank you in advance, 先感谢您,

JP- J.P-

    <?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;
}
    ?>

Two steps: define a function to compare the objects, then call usort($all, "cmp") . 两个步骤:定义一个比较对象的函数,然后调用usort($all, "cmp") Example: 例:

<?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");
}
?>

I assume, of course, that you're trying to merge two arrays of objects and then compare them based on some property. 当然,我假设您正在尝试合并两个对象数组,然后根据某些属性对其进行比较。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM