亚洲日本中文字幕天天更新,亚洲人成人网站在线观看,亚洲免费人成在线视频观看,亚洲日韩乱码中文无码蜜桃臀,亚洲精品一区二区三区精品

網(wǎng)站建設(shè)資訊

PHP開發(fā)中常用的數(shù)據(jù)排列方法

網(wǎng)站建設(shè) 2021-10-28 09:23:04 | 閱讀:998 | 作者:劉紅旺 | 標(biāo)簽:PHP開發(fā)    
一、大小排列(冒泡排序)

主要運(yùn)用于數(shù)組數(shù)字大小排序
 
 function maopaoSort(&$arr){    
     //必須是&$arr,傳一個(gè)地址,如果是$arr,根據(jù)函數(shù)調(diào)用機(jī)制,排序?qū)o法生效
        $temp=0;    //中間變量
        $flag=false;
            //外層循環(huán)控制循環(huán)次數(shù)
        for($i=0;$i<count($arr)-1;$i++){
               //內(nèi)層循環(huán)控制每一次循環(huán)的交換
                 for($j=0;$j<count($arr)-1-$i;$j++){
                     //若前面的數(shù)比后面的數(shù)大,則交換
                     if($arr[$j]>$arr[$j+1]){
                        $temp=$arr[$j];
                        $arr[$j]=$arr[$j+1];
                        $arr[$j+1]=$temp;
                        $flag=true;
                    }
                }
                if(!$flag){
                    //已經(jīng)是有序
                    break; 
                }
                $flag=false;
            }
            return $arr;
}

PHP代碼

JSON數(shù)組
 
二、構(gòu)建產(chǎn)品參數(shù)(遞歸)

主要運(yùn)用于商品的多個(gè)參數(shù)之間的所有組合
/*構(gòu)建商品參數(shù)集*/ 
function brush($res = [], $arr = [])
{
    if (empty($res)) $res = (array)array_shift($arr);
    if (empty($arr)) return $res;
    $current = array_shift($arr); # 接下來要參與計(jì)算的一組屬性
    $last = [];
    foreach ($res as $row => $row_val) { # 循環(huán)上一次已經(jīng)算出的集合
        foreach ($current as $col => $col_val) {
            $last[] = $row_val . '_' . $col_val;
           
        }
    }
    return brush($last,$arr); # 遞歸處理, 直到$arr滾到最后一組屬性
}
 
示例:color:
      Red,black
Available Metals:
Yellow Gold,White Gold,Rose Gold,Platinum
      Available to fit these Center Stone Shapes:
圖形1,圖形2,圖形3,圖形4
如圖:循環(huán)出所有的產(chǎn)品參數(shù)組合
展示
數(shù)據(jù)展示2

三,樹狀排列

主要應(yīng)用于分類排列 先找出一級(jí)分類再找一級(jí)分類下的二級(jí)類以此類推

樹狀排列

   /**
     * 無限分類-權(quán)限
     * @param array $cate         欄目
     * @param string $lefthtml 分隔符
     * @param int $pid         父ID
     * @param int $level         層級(jí)
     * @return array
     */
    public static function cateTree($cate ,$name='title', $lefthtml = '|— ' , $pid = 0 , $level = 0 ){
        $arr = array();
        foreach ($cate as $v){
            if ($v['pid'] == $pid) {
                $v['level']      = $level + 1;
                $v['lefthtml'] = str_repeat($lefthtml,$level);
                $v['l'.$name]   = $v['lefthtml'].lang($v[$name]);
                $arr[] = $v;
                $arr = array_merge($arr, self::cateTree($cate,$name, $lefthtml, $v['id'], $level+1));
            }
        }
        return $arr;
    }
 
效果