好的,以下是一个示例代码:

/**
 * 多条件合并两个对象数组
 * @param array $arr1 第一个数组
 * @param array $arr2 第二个数组
 * @param array $conditions 条件数组,包含多个键值对
 * @return array 合并后的数组
 */
function mergeArraysByConditions($arr1, $arr2, $conditions)
{
    $result = array();

    foreach ($arr1 as $item1) {
        $matched = false;
        foreach ($arr2 as $item2) {
            $match = true;
            foreach ($conditions as $key => $value) {
                if ($item1[$key] != $item2[$value]) {
                    $match = false;
                    break;
                }
            }
            if ($match) {
                $result[] = array_merge($item1, $item2);
                $matched = true;
            }
        }
        if (!$matched) {
            $result[] = $item1;
        }
    }

    return $result;
}

使用示例:

$arr1 = array(
    array('id' => 1, 'name' => 'foo', 'age' => 20),
    array('id' => 2, 'name' => 'bar', 'age' => 25),
    array('id' => 3, 'name' => 'baz', 'age' => 30)
);

$arr2 = array(
    array('id' => 1, 'gender' => 'male', 'hobby' => 'reading'),
    array('id' => 2, 'gender' => 'female', 'hobby' => 'swimming'),
    array('id' => 4, 'gender' => 'male', 'hobby' => 'running')
);

$conditions = array('id' => 'id');

$result = mergeArraysByConditions($arr1, $arr2, $conditions);

print_r($result);

输出结果:

Array
(
    [0] => Array
        (
            [id] => 1
            [name] => foo
            [age] => 20
            [gender] => male
            [hobby] => reading
        )

    [1] => Array
        (
            [id] => 2
            [name] => bar
            [age] => 25
            [gender] => female
            [hobby] => swimming
        )

    [2] => Array
        (
            [id] => 3
            [name] => baz
            [age] => 30
        )

)

以上代码实现了按照指定条件合并两个对象数组,并返回新的合并后的数组。

你现在是一个thinkphp专家,请帮我用thinkphp写一个函式,它需要做到多条件合并2个对象数组

原文地址: https://www.cveoy.top/t/topic/zhn 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录