它山之石可以攻玉

键盘上的生活
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

PHP使用static声明静态变量计算层级数据

Posted on 2020-01-10 17:17  陈达辉  阅读(295)  评论(0编辑  收藏  举报

需求:需要对数组按照序号逐级显示,下级带缩进。

	private function _getCategoryName($data,$kg=''){
		
		static $num = 1;
		static $retrun = array();
		
		if(!empty($data)){
			foreach ($data as $key => $value){
				$retrun[] = $num++.'.'.$kg.$value['name'];
				if(!empty($value['children'])){
					$this->_getCategoryName($value['children'],$kg.'——');
				}
			}
		}
		
		return $retrun;
	}

  

根据序号查找ID:

	/**
	 * 获取产品分类ID
	 * @access private
	 * @param array $data
	 * @return array
	 */
	private function _getCategoryId($data, $k){
	
		static $num = 1;
		static $category_id = 0;
	
		if($num==1){
			$category_id = 0;
		}
	
		if(!empty($data)){
			foreach ($data as $key => $value){
				if(empty($category_id)){
					if($num++ == $k){
						$category_id = $value['category_id'];
						$num = 1;
						break;
					}elseif(!empty($value['children'])){
						$this->_getCategoryId($value['children'], $k);
					}
				}
			}
		}
		return $category_id;
	}