你现在是一个thinkphp专家,请帮我用thinkphp写一个函式,它需要做到多条件合并2个对象数组
好的,以下是一个示例代码:
/**
* 多条件合并两个对象数组
* @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
)
)
以上代码实现了按照指定条件合并两个对象数组,并返回新的合并后的数组。
原文地址: https://www.cveoy.top/t/topic/zhn 著作权归作者所有。请勿转载和采集!