array操作系列

2019-10-12 14:02:30

子孙树

$arr = [
	['id'=>1,'parent_id'=>0,'type'=>5],
	['id'=>2,'parent_id'=>1,'type'=>3],
	['id'=>3,'parent_id'=>0,'type'=>1],
	['id'=>4,'parent_id'=>3,'type'=>3],
];
var_dump(getSubTree($arr));

function getSubTree($data, $parent = 'parent_id', $son = 'id', $pid = 0)
    {
        $tmp = [];
        foreach ($data as $key => $value) {
            if ($value[$parent] == $pid) {
                $value['child'] = getSubTree($data, $parent, $son, $value[$son]);
                $tmp[] = $value;
            }
        }
        return $tmp;
    }

·

二维数组分组

$arr = [
	['id'=>1,'type'=>5],
	['id'=>2,'type'=>3],
	['id'=>3,'type'=>1],
	['id'=>4,'type'=>3],
];
var_dump(arrayGroupBy($arr, 'type'));

 function arrayGroupBy($arr, $key)
    {
        $grouped = [];
        foreach ($arr as $k => $value) {
            $grouped[$value[$key]][$k] = $value;
        }
        if (func_num_args() > 2) {
            $args = func_get_args();
            foreach ($grouped as $key => $value) {
                $parms = array_merge([$value], array_slice($args, 2, func_num_args()));
                $grouped[$key] = call_user_func_array('arrayGroupBy', $parms);
            }
        }
        return $grouped;
    }

·

二维数组排序

$arr = [
	['id'=>1,'sort'=>5],
	['id'=>2,'sort'=>3],
	['id'=>3,'sort'=>1],
];
array_multisort(array_column($arr, 'sort'), SORT_ASC, $arr);
var_dump($arr);

·

交叉转化

$arr = [
    'id',
    1,
    'type',
    2
];
var_dump(hashMake($arr));
function hashMake(array $hashData): array
{
    $return = [];
    $count  = count($hashData);
    for ($i = 0; $i < $count; $i += 2) {
        $return[$hashData[$i]] = $hashData[$i + 1];
    }
    return $return;
}
本文由"putyy"原创,转载无需和我联系,但请注明来自putyy
您的浏览器不支持canvas标签,请您更换浏览器