php的功能强大而又简单,这里写一下简单常用的数组函数使用.
这里以源码代文章吧,源码都是我写的时候用到的一些源码.
unset($postdata['pay']); //删除键值
if(count($pay)==1)$pay[] = 0;
$key = ['is_receipt','is_payment'];
//键值合并成一个新数组
$paytab = array_combine($key, $pay);
$data = array_merge($postdata,$paytab); //合并数组,后数组同键值压前数组
删除最后一个
if(count($data) == count($list)){
array_pop($data); //删除掉最后一个数组,原数组保留删除掉的,返回的是最后一个
}
在职位这里.比如这个取菜单,就用到了大量的数组操作.
/**取职位,这里的职位可以一人身兼几职
* */
protected function getGroupText(){
$groupText = Cache::remember('sys_group_text'.$this->uuid,function(){
$grouptab = $this->getGroups($this->adminInfo['id']);
if(empty($grouptab)) return false;
$groupTitle = array_column($grouptab, 'title'); //职位合并
$groupTitle = array_merge($groupTitle);
return $groupTitle;
});
$this->group = $groupText; //职位
}
/* 取菜单 */
protected function getMenu(){
//没有缓存则取
$menu = Cache::remember('sys_menu'.$this->uuid,function(){
$grouptab = $this->getGroups($this->adminInfo['id']);
if(empty($grouptab)) return false;
$last_names = array_column($grouptab, 'rules'); //多维数组合并一列,这里合并rulse
$rulestab = [];
foreach ($last_names as $vo){
$a = explode(',', $vo);
$rulestab = array_merge($rulestab, $a);
}
/*利用键值翻转原理快速去重*/
$rulestab = array_flip($rulestab);
$rulestab = array_flip($rulestab);
$rulestab = array_merge($rulestab);
/*看权限定菜单*/
$authmodel = new AuthRule();
$allCateId = implode(',', $rulestab); //转成文本好查询
$tree = $authmodel-> menuTree($allCateId,0,'subMenus');
return empty($tree)?false : $tree[0];
});
return $menu;
}
最后,还是直接附上数组的中文文档更靠谱:https://php.net/manual/zh/ref.array.php