# 數組增強
數組增強組件主要是對數組等數據進行處理,如無限級分類操作、商品規格的迪卡爾乘積運算等。
其他產品也可以使用該組件,請登錄 [GITHUB](https://github.com/houdunwang/arr) 查看源代碼與說明文檔。
[TOC]
# 開始使用
#### 遞歸數組合并
```
$a=['b'=>['b1'=>2]];
$b=['a'=>1,'b'=>['b1'=>2,'b2'=>3]];
Arr::merge($a,$b);
```
以上代碼結果如下:
```
[
'a'=> 1
'b' =>['b1' => 2,'b2' => 3]
]
```
#### 根據鍵名獲取數據
如果鍵名不存在時返回默認值,支持鍵名的點語法
```
$d=['a'=>1,'b'=>2];
Arr::get($d,'c','沒有數據喲');
```
使用點語法查找:
```
$d = ['web' => [ 'id' => 1, 'url' => 'houdunwang.com' ]];
print_r(Arr::get($d,'web.url'));
```
#### 從數組中移除給定的值
```
$d = [1,2,3,4,5];
Arr::del($d,[3,4]);
//結果是 [1,2,5]
```
#### 排隊字段獲取數據
以下代碼獲取除 id、url以外的數據
```
$d = [ 'id' => 1, 'url' => 'houdunwang.com' ,'name'=>'后盾人'];
print_r(Arr::getExtName($d,['id','url']));
```
#### 設置數組元素值支持點語法
```
$data=[];
print_r(Arr::set($data,'a.b.c',99));
```
#### 改變數組鍵名大小寫
```
Arr::keyCase(array('name'=>'houdunwang',array('url'=>'hdphp.com')),1);
第2個參數為類型: 1 大寫 0 小寫
```
#### 不區分大小寫檢測鍵名是否存
```
Arr::keyExists('Hd',['hd'=>'后盾網']);
```
#### 數組值大小寫轉換
```
Arr::valueCase(['name'=>'houdunwang'],1);
第2個參數為類型: 1 大寫 0 小寫
```
#### 數組進行整數映射轉換
```
$data = ['status'=>1];
$d = Arr::intToString($data,['status'=>[0=>'關閉',1=>'開啟']]);
```
生成的結果如下
```
$d=['status'=>1,'_status'=>'開啟'];
```
#### 數組中的字符串數字轉為數值類型
```
$data = ['status'=>'1','click'=>'200'];
$d = Arr::stringToInt($data);
```
#### 根據下標過濾數據元素
```
$d = [ 'id' => 1, 'url' => 'houdunwang.com','title'=>'后盾網' ];
print_r(Arr::filterKeys($d,['id','url']));
//過濾 下標為 id 的元素
```
當第三個參數為 0 時只保留指定的元素
```
$d = [ 'id' => 1, 'url' => 'houdunwang.com','title'=>'后盾網' ];
print_r(Arr::filterKeys($d,['id'],0));
//只顯示id與title 的元素
```
#### 獲得樹狀結構
```
Arr::tree($data, $title, $fieldPri = 'cid', $fieldPid = 'pid');
參數 說明
$data 數組
$title 字段名稱
$fieldPri 主鍵 id
$fieldPid 父 id
```
示例
```
$data = [
['cid' => 1, 'pid' => 0, 'title' => '新聞'],
['cid' => 2, 'pid' => 1, 'title' => '國內新聞'],
];
$d = \houdunwang\arr\Arr::tree($data, 'title', 'cid', 'pid');
```
#### 獲得目錄列表
```
Arr::channelList($data, $pid = 0, $html = " ", $fieldPri = 'cid', $fieldPid = 'pid');
參數 說明
data 操作的數組
pid 父級欄目的 id 值
html 欄目名稱前綴,用于在視圖中顯示層次感的欄目列表
fieldPri 唯一鍵名,如果是表則是表的主鍵
fieldPid 父 ID 鍵名
```
#### 獲得多級目錄列表(多維數組)
```
Arr::channelLevel($data, $pid = 0, $html = " ", $fieldPri = 'cid', $fieldPid = 'pid')
參數 說明
data 操作的數組
pid 父級欄目的 id 值
html 欄目名稱前綴,用于在視圖中顯示層次感的欄目列表
fieldPri 唯一鍵名,如果是表則是表的主鍵
fieldPid 父 ID 鍵名
```
#### 獲得所有父級欄目
```
Arr::parentChannel($data, $sid, $fieldPri = 'cid', $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, $cid, $fieldPid = 'pid')
參數 說明
data 操作的數組
cid 欄目cid
fieldPid 父 ID 鍵名
```
#### 迪卡爾乘積
```
Arr::descarte($arr, $tmp = array())
```
- 文檔已經遷移到后盾人
- 介紹
- 框架特性
- 開發規范
- 許可協議
- 作者向軍
- 安裝框架
- 更新框架
- 基礎
- 入口文件
- 應用配置
- 優雅鏈接
- 目錄結構
- 系統常量
- 自動加載
- 應用密鑰
- 系統函數
- CSRF保護
- 依賴注入
- 跨域訪問
- 配置
- 配置文件
- 基本功能
- 擴展配置
- c 函數
- 控制器
- 定義聲明
- 基本使用
- 相關函數
- 響應消息
- 路由
- 基礎知識
- 基礎路由
- 路由參數
- 參數檢測
- 依賴注入
- 控制器
- 分組路由
- RESTful
- 別名路由
- 數據
- 配置相關
- 核心操作
- 查詢構造器
- 日志記錄
- 分頁處理
- 事務處理
- 函數相關
- 數據庫
- 數據遷移
- 數據填充
- 模型
- 定義模型
- 模型動作
- 模型驗證
- 自動完成
- 自動過濾
- 字段保護
- 數據填充
- 多表關聯
- 分頁處理
- 倉庫
- 數據倉庫
- 查詢規則
- 視圖
- 基礎知識
- 模板配置
- 模板文件
- 分配數據
- 系統標簽
- 擴展標簽
- 緩存模板
- 模板繼承
- 視圖函數
- widget
- vue組件
- 中間件
- 中間件
- 緩存
- 基本操作
- 文件緩存
- 數據表緩存
- 服務
- 服務容器
- 定制服務
- 相關函數
- 請求
- 基本使用
- 請求擴展
- 測試
- 基礎知識
- 基本使用
- HTTP測試
- 調試
- 調試模式
- 日志管理
- 組件
- 多語言
- 響應處理
- Cookie
- Session
- 驗證碼
- XML
- 自動驗證
- 文件處理
- 壓縮解壓
- RBAC
- 數組增強
- 分頁管理
- 圖像處理
- 生成靜態
- 加密解密
- 字符串
- 數據集合
- 工具服務
- 目錄操作
- 郵件發送
- CURL
- QQ登錄
- 數據備份
- 購物車
- 日志處理
- 命令組件
- 二維碼
- 后盾云
- 日期處理
- 阿里
- 支付寶
- 阿里云直播
- 阿里云短信
- 阿里云郵件
- 阿里云OSS
- SOCKET
- 啟動與關閉
- 前端
- 微信