PHPackages                             buqiu/arr - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. buqiu/arr

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

buqiu/arr
=========

数组增强组件主要是对数组等数据进行处理，如无限级分类操作、商品规格的迪卡尔乘积运算等

v1.2.0(4y ago)61.9kMITPHPPHP &gt;=8.0CI failing

Since Jul 9Pushed 3y agoCompare

[ Source](https://github.com/buqiu/arr)[ Packagist](https://packagist.org/packages/buqiu/arr)[ RSS](/packages/buqiu-arr/feed)WikiDiscussions master Synced 3d ago

READMEChangelog (2)Dependencies (1)Versions (7)Used By (0)

数组增强
====

[](#数组增强)

数组增强组件主要是对数组等数据进行处理，如无限级分类操作、商品规格的迪卡尔乘积运算等

### 安装组件

[](#安装组件)

使用 composer 命令安装或下载元代码使用

```
composer require buqiu/arr
```

### 功能介绍

[](#功能介绍)

##### 根据键名获取数据

[](#根据键名获取数据)

如果键名不存在时返回默认值，支持键名的点语法

```
$d=['a'=>1,'b'=>2];
Arr::get($d,'c','没有数据哟');
```

使用点语法查找：

```
$d = ['web' => [ 'id' => 1, 'url' => 'lnmp.org.cn' ]];F
Arr::get($d,'web.url');

```

#### 排队字段获取数据

[](#排队字段获取数据)

以下代码获取除 id、url以外的数据

```
$d = ['id' => 1,'url' => 'lnmp','name'=>'ken'];
print_r(Arr::getExtName($d,['id','url']));
```

#### 设置数组元素值支持点语法

[](#设置数组元素值支持点语法)

```
$data = (Arr::set([],'a.b.c',99);
```

#### 改变数组键名大小写

[](#改变数组键名大小写)

```
$data = array('name'=>'lnmp',array('url'=>'lnmp.org.cn'));
$data = (Arr::keyCase($data,1);
第2个参数为类型： 1 大写  0 小写
```

#### 不区分大小写检测键名是否存

[](#不区分大小写检测键名是否存)

```
(Arr::keyExists('K',['K'=>'Kne']);
```

#### 数组值大小写转换

[](#数组值大小写转换)

```
(Arr::valueCase(['name'=>'lnmp'],1);
第2个参数为类型： 1 大写  0 小写
```

#### 数组进行整数映射转换

[](#数组进行整数映射转换)

```
$data = ['status'=>1];
$d = (Arr::intToString($data,['status'=>[0=>'关闭',1=>'开启']]);
```

#### 数组中的字符串数字转为数值类型

[](#数组中的字符串数字转为数值类型)

```
$data = ['status'=>'1','click'=>'200'];
$d = (Arr::stringToInt($data);
```

#### 根据下标过滤数据元素

[](#根据下标过滤数据元素)

```
$d = [ 'id' => 1, 'url' => 'lnmp.org.cn','title'=>'Ken' ];
print_r(Arr::filterKeys($d,['id','url']));
//过滤 下标为 id 的元素
```

当第三个参数为 0 时只保留指定的元素

```
$d = [ 'id' => 1, 'url' => 'lnmp.org.cn','title'=>'ken' ];
print_r(Arr::filterKeys($d,['id'],0));
//只显示id与title 的元素
```

#### 获得树状结构

[](#获得树状结构)

```
(Arr::tree($data, $title, $fieldPri = 'id', $fieldPid = 'pid');
参数                   	说明
$data                 	数组
$title                	字段名称
$fieldPri             	主键 id
$fieldPid             	父 id
```

#### 获得目录列表

[](#获得目录列表)

```
(Arr::channelList($data, $pid = 0, $html = "&nbsp;", $fieldPri = 'id', $fieldPid = 'pid', $level = 1);
参数                     说明
data                 	操作的数组
pid                  	父级栏目的 id 值
html                	栏目名称前缀，用于在视图中显示层次感的栏目列表
fieldPri              	唯一键名，如果是表则是表的主键
fieldPid              	父 ID 键名
level                 	等级（不需要传参数，系统运行时使用 )
```

#### 获得多级目录列表（多维数组）

[](#获得多级目录列表多维数组)

```
(Arr::channelLevel($data, $pid = 0, $html = "&nbsp;", $fieldPri = 'id', $fieldPid = 'pid')
参数                     说明
data                    操作的数组
pid                     父级栏目的 id 值
html                    栏目名称前缀，用于在视图中显示层次感的栏目列表
fieldPri                唯一键名，如果是表则是表的主键
fieldPid                父 ID 键名
```

#### 获得所有父级栏目

[](#获得所有父级栏目)

```
(Arr::parentChannel($data, $sid, $fieldPri = 'id', $fieldPid = 'pid');
参数                     说明
data                    操作的数组
sid                     子栏目
fieldPri                唯一键名，如果是表则是表的主键
fieldPid                父 ID 键名
```

#### 是否为子栏目

[](#是否为子栏目)

```
(Arr::isChild($data, $sid, $pid, $fieldPri = 'cid', $fieldPid = 'pid')
参数                      说明
data                     操作的数组
sid                      子栏目id
pid                      父栏目id
fieldPri                 唯一键名，如果是表则是表的主键
fieldPid                 父 ID 键名
```

#### 是否有子栏目

[](#是否有子栏目)

```
(Arr::hasChild($data, $id, $fieldPid = 'pid')
参数                      说明
data                     操作的数组
cid                      栏目id
fieldPid                 父 ID 键名
```

#### 无限级栏目分类

[](#无限级栏目分类)

```
(Arr::categories($categories,$pid = 0,$title = 'title',$id = 'id',$parent_id = 'parent_id')
参数						 说明
$categories				 操作的数组
$pid					 父级编号
$title                   栏目字段
$id						 主键名
$parent_id				 父级字段名
```

#### 迪卡尔乘积

[](#迪卡尔乘积)

```
(Arr::descartes($arr, $tmp = array())
```

###  Health Score

33

—

LowBetter than 75% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity21

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity68

Established project with proven stability

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~205 days

Recently: every ~215 days

Total

6

Last Release

1474d ago

PHP version history (2 changes)v1.0.0PHP &gt;=7.0.0

v1.2.0PHP &gt;=8.0

### Community

Maintainers

![](https://www.gravatar.com/avatar/97229ae0e947eeff418e092a036e90d81654fb9a640281ed22438ec5685bc22b?d=identicon)[buqiu](/maintainers/buqiu)

---

Top Contributors

[![buqiu](https://avatars.githubusercontent.com/u/7991121?v=4)](https://github.com/buqiu "buqiu (11 commits)")

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/buqiu-arr/health.svg)

```
[![Health](https://phpackages.com/badges/buqiu-arr/health.svg)](https://phpackages.com/packages/buqiu-arr)
```

###  Alternatives

[novatree/wallet

Simple Wallet

272.5k](/packages/novatree-wallet)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
