php 二维数组转js数组中,在 PHP 7.2 中,将一个树形结构的多维数组转换为二维数组的实现...

1、HTTP 请求,获取租户列表(基于当前租户 ID,自根租户自上而下),获取到一个树形结构的多维数组,无限级循环

/**

* HTTP 请求,获取租户列表(基于当前租户 ID,自根租户自上而下)

*

* @param string $groupId 租户ID

*

* @return array

* 格式如下:

* [

* 'group_id' => 'c10e87f39873512a16727e17f57456a5', // 租户ID

* 'group_pid' => '', // 租户父级 ID

* 'group_code' => '1800000001', // 租户标识

* 'group_name' => '广东省', // 租户名称

* 'is_open' => 1, // 租户状态,0:关闭;1:开启

* 'group_logo' => '/uploads/cmc_group_logo/20190214/1550128076-ccLZyN.png', // 租户 LOGO 地址

* 'open_type' => 'self-reg', // 开通方式,self-reg:自助开通;admin-open:后台开通

* 'source' => 'cmc', // 开通途径

* 'add_time' => '1970-01-01 08:00:01', // 添加时间

* 'update_time' => '2019-03-11 14:43:33', // 更新时间

* 'child' => [

* [

* 'group_id' => '015ce30b116ce86058fa6ab4fea4ac63',

* 'group_pid' => 'c10e87f39873512a16727e17f57456a5',

* 'group_code' => '1800000005',

* 'group_name' => '深圳市',

* 'is_open' => 1,

* 'group_logo' => '/uploads/cmc_group_logo/20190222/1550817342-Rr99M2.jpg',

* 'open_type' => 'admin-open',

* 'source' => '',

* 'add_time' => '2018-04-26 10:05:43',

* 'update_time' => '2019-03-11 14:43:38',

* 'child' => [

* [

* 'group_id' => '7a4db30bbab43d2c410ea32e877492a1',

* 'group_pid' => '015ce30b116ce86058fa6ab4fea4ac63',

* 'group_code' => '88888888',

* 'group_name' => '罗湖区',

* 'is_open' => 1,

* 'group_logo' => '',

* 'open_type' => 'admin-open'

* 'source' => '',

* 'add_time' => '2018-06-22 17:40:05',

* 'update_time' => '2019-03-11 14:41:29',

* 'child' => [

* ],

* ],

* [

* 'group_id' => 'chinamcloud',

* 'group_pid' => '015ce30b116ce86058fa6ab4fea4ac63',

* 'group_code' => '1800000056',

* 'group_name' => '南山区',

* 'is_open' => 1,

* 'group_logo' => '',

* 'open_type' => 'admin-open',

* 'source' => '',

* 'add_time' => '2018-07-25 16:17:26',

* 'update_time' => '2019-03-11 14:30:50',

* 'child' => [

* ],

* ],

* ],

* ],

* ],

* ]

*

*

* @throws ServerErrorHttpException

*/

public static function httpGetAllGroupTree($groupId)

{

/* HTTP 请求,获取租户列表(基于当前租户 ID,自根租户自上而下) */

$httpCmcConsoleGroup = new HttpCmcConsoleGroup();

$httpCmcConsoleGroupGetAllGroupTree = $httpCmcConsoleGroup->getAllGroupTree($groupId);

if ($httpCmcConsoleGroupGetAllGroupTree === false) {

if ($httpCmcConsoleGroup->hasErrors()) {

$firstError = '';

foreach ($httpCmcConsoleGroup->getFirstErrors() as $message) {

$firstError = $message;

break;

}

throw new ServerErrorHttpException(Yii::t('error', Yii::t('error', Yii::t('error', '201002'), ['first_error' => $firstError])), 201002);

} elseif (!$httpCmcConsoleGroup->hasErrors()) {

throw new ServerErrorHttpException('Framework service console HTTP request failed for unknown reasons.');

}

}

return $httpCmcConsoleGroupGetAllGroupTree['data'];

}

2、获取租户列表(二维数组),将一个树形结构的多维数组转换为二维数组

/**

* 获取子级租户列表(二维数组)

*

* @param array $groupTree 租户列表(树形)

*

* @return array

* 格式如下:

* [

* '015ce30b116ce86058fa6ab4fea4ac63' => [

* 'group_id' => '015ce30b116ce86058fa6ab4fea4ac63', // 租户ID

* 'group_pid' => 'c10e87f39873512a16727e17f57456a5', // 租户父级 ID

* 'group_code' => '1800000005', // 租户标识

* 'group_name' => '深圳市', // 租户名称

* 'is_open' => 1, // 租户状态,0:关闭;1:开启

* 'group_logo' => '/uploads/cmc_group_logo/20190222/1550817342-Rr99M2.jpg', // 租户 LOGO 地址

* 'open_type' => 'admin-open', // 开通方式,self-reg:自助开通;admin-open:后台开通

* 'source' => '', // 开通途径

* 'add_time' => '2018-04-26 10:05:43', // 添加时间

* 'update_time' => '2019-03-11 14:43:38', // 更新时间

* ],

* '7a4db30bbab43d2c410ea32e877492a1' => [

* 'group_id' => '7a4db30bbab43d2c410ea32e877492a1',

* 'group_pid' => '015ce30b116ce86058fa6ab4fea4ac63',

* 'group_code' => '88888888',

* 'group_name' => '罗湖区',

* 'is_open' => 1,

* 'group_logo' => '',

* 'open_type' => 'admin-open',

* 'source' => '',

* 'add_time' => '2018-06-22 17:40:05',

* 'update_time' => '2019-03-11 14:41:29',

* ],

* ...

* ]

*

* @throws ServerErrorHttpException

*/

public static function getChildGroupTwo($groupTree)

{

if (isset($groupTree['child'])) {

if (!empty($groupTree['child'])) {

foreach ($groupTree['child'] as $childGroup) {

$groupTree[$childGroup['group_id']] = $childGroup;

unset($groupTree[$childGroup['group_id']]['child']);

$groupTree['child'] = $childGroup['child'];

$groupTree = static::getChildGroupTwo($groupTree);

}

} else {

unset($groupTree['child']);

$groupTree = static::getChildGroupTwo($groupTree);

}

}

return $groupTree;

}

/**

* 获取租户列表(二维数组)

*

* @param object $identity 当前用户的身份实例

*

* @return array

* 格式如下:

* [

* 'c10e87f39873512a16727e17f57456a5' => [

* 'group_id' => 'c10e87f39873512a16727e17f57456a5', // 租户ID

* 'group_pid' => '', // 租户父级 ID

* 'group_code' => '1800000001', // 租户标识

* 'group_name' => '广东省', // 租户名称

* 'is_open' => 1, // 租户状态,0:关闭;1:开启

* 'group_logo' => '/uploads/cmc_group_logo/20190214/1550128076-ccLZyN.png', // 租户 LOGO 地址

* 'open_type' => 'self-reg', // 开通方式,self-reg:自助开通;admin-open:后台开通

* 'source' => '', // 开通途径

* 'add_time' => '1970-01-01 08:00:01', // 添加时间

* 'update_time' => '2019-03-11 14:43:33', // 更新时间

* ],

* '015ce30b116ce86058fa6ab4fea4ac63' => [

* 'group_id' => '015ce30b116ce86058fa6ab4fea4ac63', // 租户ID

* 'group_pid' => 'c10e87f39873512a16727e17f57456a5', // 租户父级 ID

* 'group_code' => '1800000005', // 租户标识

* 'group_name' => '深圳市', // 租户名称

* 'is_open' => 1, // 租户状态,0:关闭;1:开启

* 'group_logo' => '/uploads/cmc_group_logo/20190222/1550817342-Rr99M2.jpg', // 租户 LOGO 地址

* 'open_type' => 'admin-open', // 开通方式,self-reg:自助开通;admin-open:后台开通

* 'source' => '', // 开通途径

* 'add_time' => '2018-04-26 10:05:43', // 添加时间

* 'update_time' => '2019-03-11 14:43:38', // 更新时间

* ],

* '7a4db30bbab43d2c410ea32e877492a1' => [

* 'group_id' => '7a4db30bbab43d2c410ea32e877492a1',

* 'group_pid' => '015ce30b116ce86058fa6ab4fea4ac63',

* 'group_code' => '88888888',

* 'group_name' => '罗湖区',

* 'is_open' => 1,

* 'group_logo' => '',

* 'open_type' => 'admin-open',

* 'source' => '',

* 'add_time' => '2018-06-22 17:40:05',

* 'update_time' => '2019-03-11 14:41:29',

* ],

* ...

* ]

*

*

* @throws ServerErrorHttpException

*/

public static function getAllGroupTwo($identity)

{

// HTTP 请求,获取租户列表(基于当前租户 ID,自根租户自上而下)

$httpGetAllGroupTree = CmcConsoleGroupService::httpGetAllGroupTree($identity->group_id);

$rootGroupTwo[$httpGetAllGroupTree['group_id']] = $httpGetAllGroupTree;

$allGroupTwo = $rootGroupTwo;

if (isset($httpGetAllGroupTree['child'])) {

unset($rootGroupTwo[$httpGetAllGroupTree['group_id']]['child']);

$allGroupTree['child'] = $httpGetAllGroupTree['child'];

$childGroupTwo = static::getChildGroupTwo($allGroupTree);

$allGroupTwo = array_merge($rootGroupTwo, $childGroupTwo);

}

return $allGroupTwo;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值