分享一个主表列表查询子表合并数组 类似tp5关联模型

/**
 * @param $oneArray 第一个数组
 * @param $twoArray 第二个数组
 * @param $oneField 第一个数组的字段
 * @param $towField 第二个数组的字段
 * @param $sub 子集索引名
 * @param bool $is_unset 是否删除子集为空的项
 * @return bool
 */
function mergeSubArray(&$oneArray, $twoArray,$oneField, $towField, $sub,$is_unset=false)
{
    if (!is_array($oneArray) || !is_array($twoArray)) {
        return false;
    }
    $result = array();
    foreach ($twoArray as $k => $v) {
        $result[$v[$towField]][] = $v;
    }
    foreach ($oneArray as $k1 => $v) {
        foreach ($result as $k2 => $item) {
            if ($k2 = $v[$oneField]) {
                $oneArray[$k1][$sub] = isset($result[$k2])?$result[$k2]:[];
                if ($is_unset&&empty($oneArray[$k1][$sub])){
                    unset($oneArray[$k1]);
                }
                continue;
            }
        }
    }
    $oneArray = array_values($oneArray); //重新生成索引
}
mergeSubArray($one,$two,'id','adp_id','ad');//使用方法

$one 就是合并后的数组

数组 $one
1.png

数组 $two
2.png

合并后
3.png

0 条评论

发布
问题