ThinkPHP 多条件合并对象数组 - 数组数据整合函数
ThinkPHP 多条件合并对象数组
本文将使用 ThinkPHP 编写一个函数,实现根据多个条件合并两个对象数组的功能,并提供代码示例和使用说明。
函数代码:
/**
* 多条件合并两个对象数组
* @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
)
)
说明:
- 该函数接收三个参数:第一个数组
$arr1,第二个数组$arr2,以及一个包含多个键值对的条件数组$conditions。 - 循环遍历第一个数组
$arr1中的每个元素$item1,并与第二个数组$arr2中的每个元素$item2进行比较。 - 使用
foreach循环遍历$conditions数组,判断$item1和$item2中对应条件的值是否相等。 - 如果所有条件都匹配,则使用
array_merge()函数合并$item1和$item2,并将结果添加到$result数组中。 - 如果第一个数组
$arr1中的元素没有匹配到第二个数组$arr2中的元素,则直接将$item1添加到$result数组中。 - 最终返回合并后的数组
$result。
该函数可以帮助您根据多个条件,将两个对象数组中的数据进行整合,从而方便后续处理。
注意:
- 条件数组
$conditions的键值对表示要匹配的条件,键表示第一个数组$arr1中的键,值表示第二个数组$arr2中的键。 - 该函数默认情况下会将所有匹配的元素合并到一起,您可以根据实际情况进行修改。
希望以上内容对您有所帮助!
原文地址: https://www.cveoy.top/t/topic/lNgt 著作权归作者所有。请勿转载和采集!