国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 語(yǔ)言 > PHP > 正文

PHP 數(shù)組黑名單/白名單實(shí)例代碼詳解

2024-05-05 00:09:25
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

php里經(jīng)常通過(guò)join查詢得到的數(shù)據(jù), 會(huì)有這種情況:

$data = [  {id=>1,name=>a,age=>a},  {id=>1,name=>b,age=>b},  {id=>2,name=>c,age=>c},  {id=>3,name=>f,age=>f},  {id=>2,name=>d,age=>d},];

這種格式的數(shù)據(jù)其實(shí)很常見(jiàn), 實(shí)際上我們想要的數(shù)據(jù)效果是:

$data = [  [id=>1,user_info=>[[name=>a,age=>a],[name=>b,age=>b]]],  [id=>2,user_info=>[[name=>c,age=>c],[name=>d,age=>d]]],  [id=>3,user_info=>[[name=>f,age=>f]]],];

于是我們需要各種foreach處理其中函數(shù);

這里記錄一下, 兩個(gè)函數(shù)

數(shù)組的黑名單:

/** * 數(shù)組獲取黑名單內(nèi)的數(shù)據(jù) * @param array $arr 源數(shù)組 * @param array $list 白名單 * @return array * @example * $arr = ['a'=>1,'b'=>2,'c'=>3,'d'=>4] * $list = ['d','c']; * $return = ['a'=>1,'b'=>2]; */public function array_black_list(Array $arr, Array $list){  return array_diff_key($arr, array_flip($list));}

數(shù)組的白名單

/** * 數(shù)組獲取白名單內(nèi)的數(shù)據(jù) * @param array $arr 源數(shù)組 * @param array $list 白名單 * @return array * @example * $arr = ['a'=>1,'b'=>2,'c'=>3,'d'=>4] * $list = ['d','c']; * $return = ['c'=>3,'d'=>4]; */public function array_white_list(Array $arr, Array $list){  return array_intersect_key($arr, array_flip($list));}

利用黑名單和白名單, 可以很容易實(shí)現(xiàn)上述數(shù)據(jù)格式轉(zhuǎn)換:

/** * repeat數(shù)據(jù)處理(一般是leftJoin數(shù)據(jù)結(jié)構(gòu)完善) * leftJoin 查詢出來(lái)的多組數(shù)據(jù), 根據(jù)primary_id進(jìn)行數(shù)據(jù)結(jié)構(gòu)修改, 保存為 字段=>[{},{},{}]類似結(jié)構(gòu) * 效果:$data = [{id=>1,name=>a,age=>a},{id=>1,name=>b,age=>b},{id=>2,name=>c,age=>c},{id=>3,name=>null,age=>null}],$fieldArr = ['name','age'] * return [{id=>1,repeat_info=>[{name=>a,age=>a},{name=>b,age=>b}]},{id=>2,repeat_info=>[{name=>c,age=>c}]},{id=>3,repeat_info=>[]}] * @param $data  array 原數(shù)據(jù); * @param $fieldArr array 需要的字段, * @param string $primary_key 重復(fù)的數(shù)據(jù) 憑證;(一般用主鍵id) * @param string $repeat_name 重復(fù)的數(shù)據(jù)要保存數(shù)組的 字段名 * @return array */public function dealRepeatData(Array $data, Array $fieldArr, $primary_key = 'id', $repeat_name = 'repeat_info'){  $res = [];  //通過(guò)黑名單獲取不重復(fù)的值, 歸并到按id分類的數(shù)組里;  foreach ($data as $nre) {    $res[$nre[$primary_key]] = $res[$nre[$primary_key]] ?? $this->array_black_list($nre, $fieldArr);  }  //通過(guò)白名單獲取重復(fù)的值, 歸并到黑名單的$repeat_name 字段里;  foreach ($data as $re) {    $res[$re[$primary_key]][$repeat_name][] = $this->array_white_list($re, $fieldArr);  }  return array_values($res);}

總結(jié)

以上所述是小編給大家介紹的PHP 數(shù)組黑名單/白名單實(shí)例代碼,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)VeVb武林網(wǎng)網(wǎng)站的支持!


注:相關(guān)教程知識(shí)閱讀請(qǐng)移步到PHP教程頻道。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 莱西市| 通州市| 新绛县| 孝感市| 九龙坡区| 耒阳市| 洛阳市| 武安市| 华池县| 大安市| 鄂尔多斯市| 永胜县| 甘孜县| 安国市| 马山县| 安庆市| 天水市| 唐山市| 正蓝旗| 克什克腾旗| 焦作市| 宾阳县| 湘乡市| 阿瓦提县| 佛教| 庆城县| 海林市| 横山县| 合阳县| 湛江市| 石渠县| 札达县| 扎鲁特旗| 泉州市| 沾益县| 陆川县| 湄潭县| 中阳县| 容城县| 图木舒克市| 通化县|