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

2019-01-10  本文已影响0人  一个人_f993

/**

* @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]);
                }
                 break;//continue; 
            }
        }
    }
    $oneArray = array_values($oneArray); //重新生成索引
}

$this->mergeSubArray($one,$two,'id','adp_id','ad');

$one 就是合并后的数组

数组$one


1.png

数组$two


2.png

合并后数组$one


3.png
上一篇下一篇

猜你喜欢

热点阅读