Subversion Repositories php-qbpwcf

Rev

Blame | Last modification | View Log | RSS feed

<?php

#宣告指派命名空間
namespace includeV5{

        #跟問卷整理分析有關的類別
        class analyse{

                /*
                #涵式說明
                #將逗號分隔的字串 "1,2,5,7" 變成 "1,1,0,0,1,0,1" 
                #必填的參數:
                $conf["stringData"]="";#類似"1,2,5,7"的字串
                #可省略的參數:
                #$conf["maxOptionNum"]="";#總共有幾個選項?
                #$conf["optionNameArray"]=array("a1,a2,a3,b1,b2,c1,d1,d2,d3,e");#選項的名稱依序爲?
                */              
                function changeMutiChoiceToSingleChoice($conf){

                        #初始化要回傳的內容
                        $result="";

                        #儲存那幾個選項有勾選或未勾選的字串陣列
                        $strArray=array();

                        #如果 $conf["stringData"] 不存在
                        if(!isset($conf["stringData"])){

                                #回傳錯誤訊息
                                return "\$conf[\"stringData\"]參數未設定";

                                }#if end

                        #涵式說明:
                        #將固定格式的字串分開,並回傳分開的結果。
                        #回傳的參數:
                        #$result["dataArray"],爲分割好字串的陣列內容,$result["dataArray"][$i]爲第($i+1)段的內容。
                        #$result["dataCounts"],爲總共分成幾段
                        #必填的參數:
                        $conf["stringProcess"]["spiltString"]["stringIn"]=$conf["stringData"];#要處理的字串。
                        $conf["stringProcess"]["spiltString"]["spiltSymbol"]=",";#爲以哪個符號作爲分割
                        $spiledStr=stringProcess::spiltString($conf["stringProcess"]["spiltString"]);
                        unset($conf["stringProcess"]["spiltString"]);

                        #檢查變數內容
                        #var_dump($spiledStr);

                        #將字串中的 " 符號去除
                        #有幾個選項就執行幾次
                        for($i=0;$i<$spiledStr["dataCounts"];$i++){
                                
                                #涵式說明:
                                #處理字串避免網頁出錯
                                #回傳的結果:
                                #$result,爲處理好的字串。
                                #必天寫的參數:
                                $conf["stringProcess"]["correctCharacter"]["stringIn"]=$spiledStr["dataArray"][$i];#爲要處理的字串
                                #可省略的參數:
                                $conf["stringProcess"]["correctCharacter"]["selectedCharacter"]=array("\"");#爲被選擇要處理的字串/字元,須爲陣列值。
                                        #若不設定則預設爲要將這些字串作替換("<",">",";","=","#","*","'","$","%","&","|")。
                                #$conf["changeTo"];#爲被選擇的字元要換成什麼字串/字元,須爲陣列值。若不設定,則預設爲更換成""(空字串)。
                                $spiledStr["dataArray"][$i]=stringProcess::correctCharacter($conf["stringProcess"]["correctCharacter"]);
                                unset($conf["stringProcess"]["correctCharacter"]);

                                }#for end

                        #檢查變數內容
                        #var_dump($spiledStr);
                        
                        #檢查變數內容
                        #var_dump($conf);

                        #如果 $conf["optionNameArray"] 有設定
                        if(isset($conf["optionNameArray"])){

                                #檢查變數內容
                                #var_dump($conf["optionNameArray"]);

                                #取得選項的上限數值
                                $conf["maxOptionNum"]=count($conf["optionNameArray"]);

                                #檢查變數內容
                                #var_dump($conf["maxOptionNum"]);
                        
                                #有幾個選項就執行幾次
                                for($i=0;$i<$spiledStr["dataCounts"];$i++){
                                
                                        #取得當前選項的位置
                                        #涵式說明:
                                        #檢查一個數值是否與陣列裏面的元素相同,如果有相同的則會傳其變數內容。
                                        #回傳的結果:
                                        #$result["status"],0表示有找到相同的,1表示沒有找到相同的。
                                        #$result["equalVarName"],相等的變數內容。
                                        #$result["equalVarPosition"],相同的元素內容其位置爲該陣列元素的第幾個位置。
                                        #必填的參數:
                                        $conf["search"]["getEqualVar"]["conditionElement"]=$spiledStr["dataArray"][$i];#條件元素,要等於的元素內容。
                                        $conf["search"]["getEqualVar"]["compareElements"]=$conf["optionNameArray"];#要比對的陣列變數內容。
                                        $search["getEqualVar"]=search::getEqualVar($conf["search"]["getEqualVar"]);

                                        #檢查變數內容
                                        #var_dump($conf["search"]["getEqualVar"]);

                                        unset($conf["search"]["getEqualVar"]);

                                        #檢查變數內容
                                        #var_dump($search["getEqualVar"]);

                                        #如果 $search["getEqualVar"]["status"] 爲 0
                                        if($search["getEqualVar"]["status"]==0){

                                                #將其選項勾選處設爲1,表示有選擇
                                                $strArray[$search["getEqualVar"]["equalVarPosition"]]="1";

                                                #檢查變數內容
                                                #var_dump($search["getEqualVar"]["equalVarPosition"]);

                                                }#if end

                                        }#for end

                                }#if end
        
                        #反之沒有設定
                        else{

                                #有幾個選項就執行幾次
                                for($i=0;$i<$spiledStr["dataCounts"];$i++){
                                
                                        #將有填寫的選項設爲1
                                        #將 $result[["dataArray"][$i]] 設爲 1;
                                        $strArray[$spiledStr["dataArray"][$i]-1]="1";

                                        }#for end

                                }#else end

                        #檢查變數內容
                        #var_dump($strArray);

                        #檢查變數內容
                        #var_dump($conf["maxOptionNum"]);

                        #如果 $conf["maxOptionNum"] 有設定
                        if(isset($conf["maxOptionNum"])){

                                #將  $result 陣列中不存在的key指派爲0
                                for($i=0;$i<$conf["maxOptionNum"];$i++){

                                        #如果該key不存在
                                        if(!isset($strArray[$i])){

                                                #則指派其key與 value
                                                $strArray[$i]="0";

                                                }#if end

                                        }#for end

                                }#if end

                        #反之沒有設定
                        else{

                                #檢查變數內容
                                #var_dump($spiledStr["dataArray"]);

                                #尋找 $spiledStr["dataArray"][$i] 陣列中的最大值
                                #涵式說明:
                                #找最大值,結果會回傳最大值
                                #必填的參數:
                                $conf["math"]["getMaxValue"]["rawDataArray"]=$spiledStr["dataArray"];#爲原始數據
                                $maxValue=math::getMaxValue($conf["math"]["getMaxValue"]);
                                unset($conf["math"]["getMaxValue"]);
                                $maxValue=$maxValue["value"];                           

                                #檢查變數內容
                                #var_dump($maxValue);

                                #將最大值視爲最後一個選項的號碼
                                for($i=0;$i<$maxValue;$i++){

                                        #如果該key不存在
                                        if(!isset($strArray[$i])){

                                                #則指派其key與 value
                                                $strArray[$i]="0";

                                                #檢查變數內容
                                                #var_dump($strArray);

                                                }#if end

                                        }#for end

                                }#else end

                        #檢查變數內容
                        #var_dump($strArray);

                        #檢查變數內容
                        #var_dump((count($strArray)));

                        #將 $result 陣列轉爲逗號分隔的字串("1","3","4","7")
                        #$result陣列有幾個元素,就執行幾次
                        for($i=0;$i<count($strArray);$i++){

                                #檢查變數內容
                                #var_dump($i);

                                #檢查變數內容
                                #var_dump($result);
                        
                                #如果是最後一個元素
                                if($i==(count($strArray)-1)){
                                        
                                        #檢查變數內容
                                        #var_dump($i);

                                        #檢查變數內容
                                        #var_dump($result);

                                        #檢查變數內容
                                        #var_dump($strArray[$i]);

                                        #串接內容
                                        $result=$result.$strArray[$i];  

                                        #檢查變數內容
                                        #var_dump($result);     
                
                                        }#if end

                                #反之不是最後一個元素
                                else{

                                        #檢查變數內容
                                        #var_dump($result);

                                        #檢查變數內容
                                        #var_dump($strArray[$i]);

                                        #串接內容,結尾用逗號
                                        $result=$result.$strArray[$i].",";

                                        #檢查變數內容
                                        #var_dump($result);

                                        }#else end

                                }#for end

                        #檢查變數的內容
                        #var_dump($result);
                
                        #回傳結果
                        return $result; 
                        
                        }#function changeMutiChoiceToSingleChoice end 
 
                /*
                #涵式說明:
                #讀取csv檔案,一列代表一個選項填寫的情況,然後交由 analyse::changeMutiChoiceToSingleChoice 處理,並將結果寫入新的檔案裏面。
                #回傳的結果:
                #$result,處理完畢後新檔案的位置
                #必填寫的參數:
                $conf["oriCsvFileAddAndName"]="";#原始csv檔案的位置
                $conf["maxOptionNum"]="";#總共有幾個選項爲?
                #可省略的參數
                #$conf["newCsvFileAddAndName"]="";#處理好的新csv檔案位置
                #$conf["optionNameArray"]=array("a1,a2,a3,b1,b2,c1,d1,d2,d3,e");#選項的名稱依序爲?
                */
                function changeMutiChoiceToSingleChoiceFromCsvFile($conf){

                        #檢查是否已經執行到這邊
                        #echo "entered!";

                        #如果 $conf["oriCsvFileAddAndName"] 沒有設置
                        if(!isset($conf["oriCsvFileAddAndName"])){

                                #回傳錯誤資訊
                                return "\$conf[\"oriCsvFileAddAndName\"]參數沒有設置!";

                                }#if end

                        #如果 $conf["oriCsvFileAddAndName"] 檔案不存在,或無法存取
                        if(!file_exists($conf["oriCsvFileAddAndName"])){

                                #回傳錯誤資訊
                                return "\$conf[\"oriCsvFileAddAndName\"]檔案不存在,或無法存取,請檢查!";

                                }#if end

                        #檢查是否已經執行到這邊
                        #echo "entered!";

                        #如果新檔案名稱已設置
                        if(isset($conf["newCsvFileAddAndName"])){

                                #確認新檔案是否不存在
                                if(!file_exits($conf["newCsvFileAddAndName"])){

                                        #不存在,所以建立新檔案
                                        #涵式說明:
                                        #將字串寫入到檔案
                                        #回傳的結果:
                                        #$result,true表示檔案建立成功,false表示檔案建立失敗
                                        #必填的參數:
                                        $conf["fileAccess"]["writeTextIntoFile"]["fileName"]=$conf["newCsvFileAddAndName"];#爲要編輯的檔案名稱
                                        $conf["fileAccess"]["writeTextIntoFile"]["inputString"]="";#爲要寫入到裏面的內容,若要每筆資料寫入後換行,則可以在字串內容後面加上 \r\n 即可。
                                        #可省略的參數:
                                        #$conf["writeMethod"]="a";#爲檔案撰寫的方式,可省略,是複寫'a'還是,重新寫入'w',預設爲'w',重新寫入。
                                        $fileCreateStatus=fileAccess::writeTextIntoFile($conf["fileAccess"]["writeTextIntoFile"]);
                                        unset($conf["fileAccess"]["writeTextIntoFile"]);

                                        #如果 $fileCreateStatus 等於 false
                                        if($fileCreateStatus==false){

                                                #回傳錯誤訊息
                                                return "輸出檔案建立失敗!";

                                                }#if end                        

                                        }#if end

                                }#if end

                        #反之沒有設定新檔案的位置與名
                        else{

                                #檢查是否已經執行到這邊
                                #echo "entered!";

                                #在原始檔案路徑下建立新的檔案
                                
                                #取得原始檔案路徑有幾個 "/"
                                $count["pahtSymol"]=substr_count($conf["oriCsvFileAddAndName"],"/");

                                #檢查變內容
                                #var_dump($count["pahtSymol"]);

                                #如果 "/" 等於0
                                if($count["pahtSymol"]==0){
                                        
                                        #按照預設建立新檔案名稱與位置
                                        $conf["newCsvFileAddAndName"]="(已處理過)".$conf["oriCsvFileAddAndName"];
                                        
                                        }#if end
                                        
                                #如果 "/" 大於0
                                if($count["pahtSymol"]>0){
                                        
                                        #以 "/" 為分割的依據
                                        #涵式說明:
                                        #將固定格式的字串分開,並回傳分開的結果。
                                        #回傳的參數:
                                        #$result["dataArray"],爲分割好字串的陣列內容,$result["dataArray"][$i]爲第($i+1)段的內容。
                                        #$result["dataCounts"],爲總共分成幾段
                                        #必填的參數:
                                        $conf["stringProcess"]["spiltString"]["stringIn"]=$conf["oriCsvFileAddAndName"];#要處理的字串。
                                        $conf["stringProcess"]["spiltString"]["spiltSymbol"]="/";#爲以哪個符號作爲分割
                                        $spiltedString=stringProcess::spiltString($conf["stringProcess"]["spiltString"]);
                                        unset($conf["stringProcess"]["spiltString"]);
                                        
                                        #檢查變數內容
                                        #var_dump($spiltedString);
                                        
                                        #初始化 $conf["newCsvFileAddAndName"]
                                        $conf["newCsvFileAddAndName"]="";
                                                                                                                
                                        #有幾段就執行幾次
                                        for($i=0;$i<$spiltedString["dataCounts"];$i++){
                                        
                                                #如果不是最後一段
                                                if($i!=$spiltedString["dataCounts"]-1){
                                                
                                                        $conf["newCsvFileAddAndName"]=$conf["newCsvFileAddAndName"].$spiltedString["dataArray"][$i]."/";
                                                
                                                        }#if end
                                                        
                                                #反之為最後一段
                                                else{
                                                        
                                                        $conf["newCsvFileAddAndName"]=$conf["newCsvFileAddAndName"]."(已處理過)".$spiltedString["dataArray"][$i];
                                                        
                                                        }#else end
                                                
                                                }#for end
                                                
                                        #查變數內容
                                        #echo $conf["newCsvFileAddAndName"];
                                        
                                        }#if end

                                #不存在,所以建立新檔案
                                #涵式說明:
                                #將字串寫入到檔案
                                #回傳的結果:
                                #$result,true表示檔案建立成功,false表示檔案建立失敗
                                #必填的參數:
                                $conf["fileAccess"]["writeTextIntoFile"]["fileName"]=$conf["newCsvFileAddAndName"];#爲要編輯的檔案名稱
                                $conf["fileAccess"]["writeTextIntoFile"]["inputString"]="";#爲要寫入到裏面的內容,若要每筆資料寫入後換行,則可以在字串內容後面加上 \r\n 即可。
                                #可省略的參數:
                                #$conf["writeMethod"]="a";#爲檔案撰寫的方式,可省略,是複寫'a'還是,重新寫入'w',預設爲'w',重新寫入。
                                $fileCreateStatus=fileAccess::writeTextIntoFile($conf["fileAccess"]["writeTextIntoFile"]);
                                unset($conf["fileAccess"]["writeTextIntoFile"]);        

                                #如果 $fileCreateStatus 等於 false
                                if($fileCreateStatus==false){

                                        #回傳錯誤訊息
                                        return "輸出檔案建立失敗!";

                                        }#if end

                                }#else end

                        #初始化儲存處理好資訊的陣列
                        $processedStrArray=array();

                        #函式說明:
                        #依據行號分隔抓取檔案的內容,結果會回傳一個陣列
                        #回傳的變數說明:
                        #$result["fileContent"],爲檔案的內容陣列
                        #$result["lineCount"],爲檔案內容總共的行數
                        #必填的參數:
                        $conf["fileAccess"]["getFileContent"]["filePositionAndName"]=$conf["oriCsvFileAddAndName"];#爲檔案的位置以及名稱
                        #參考資料:
                        #file():取得檔案內容的行數
                        #http://php.net/manual/en/function.file.php
                        $fileGetResult=fileAccess::getFileContent($conf["fileAccess"]["getFileContent"]);
                        unset($conf["fileAccess"]["getFileContent"]);

                        #有幾行內容就執行幾次
                        for($i=0;$i<$fileGetResult["lineCount"];$i++){

                                #涵式說明
                                #將逗號分隔的字串 "1,2,5,7" 變成 "1,1,0,0,1,0,1" 
                                #必填的參數:
                                $conf["analyse"]["changeMutiChoiceToSingleChoice"]["stringData"]=$fileGetResult["fileContent"][$i];#類似"1,2,5,7"的字串
                                #可省略的參數:
                        
                                #如果 $conf["maxOptionNum"] 有設定
                                if(isset($conf["maxOptionNum"])){

                                        #則套用之
                                        $conf["analyse"]["changeMutiChoiceToSingleChoice"]["maxOptionNum"]=$conf["maxOptionNum"];#最後一個問項的號碼爲?

                                        }#if end
                                
                                #如果 $conf["optionNameArray"] 有設定
                                if(isset($conf["optionNameArray"])){

                                        #則套用之
                                        $conf["analyse"]["changeMutiChoiceToSingleChoice"]["optionNameArray"]=$conf["optionNameArray"];

                                        }#if end

                                $processedStrArray[$i]=analyse::changeMutiChoiceToSingleChoice($conf["analyse"]["changeMutiChoiceToSingleChoice"]);
                        
                                #檢查變數內容
                                #var_dump($conf["analyse"]["changeMutiChoiceToSingleChoice"]["optionNameArray"]);

                                unset($conf["analyse"]["changeMutiChoiceToSingleChoice"]);

                                }#for end

                        #有幾行內容就執行幾次
                        for($i=0;$i<$fileGetResult["lineCount"];$i++){

                                #將取得的結果寫入到新檔案裏面
                                #涵式說明:
                                #將字串寫入到檔案
                                #回傳的結果:
                                #$result,true表示檔案建立成功,false表示檔案建立失敗
                                #必填的參數:
                                $conf["fileAccess"]["writeTextIntoFile"]["fileName"]=$conf["newCsvFileAddAndName"];#爲要編輯的檔案名稱
                                $conf["fileAccess"]["writeTextIntoFile"]["inputString"]=$processedStrArray[$i]."\r\n";#爲要寫入到裏面的內容,若要每筆資料寫入後換行,則可以在字串內容後面加上 \r\n 即可。
                                #可省略的參數:
                                $conf["fileAccess"]["writeTextIntoFile"]["writeMethod"]="a";#爲檔案撰寫的方式,可省略,是複寫'a'還是,重新寫入'w',預設爲'w',重新寫入。
                                $fileCreateStatus=fileAccess::writeTextIntoFile($conf["fileAccess"]["writeTextIntoFile"]);
                                unset($conf["fileAccess"]["writeTextIntoFile"]);

                                }#for end

                        #回傳新檔案的位置與名稱
                        return $conf["newCsvFileAddAndName"];

                        }#function changeMutiChoiceToSingleChoiceFromCsvFile end

                /*
                #將兩份csv檔案裡面特定一個同名的欄位的數值進行對照,僅留下有相同數值的資料,然後回傳
                #必填的參數:
                $conf["csvFileA"]="";#第1個csv檔案的位置與名稱
                $conf["csvFileB"]="";#第2個csv檔案的位置與名稱
                $conf["compareColumnName"]="";#要對照值是否相等的欄位名稱
                #可省略的參數:
                #$conf["storeFolderName"]="";#要儲存到哪個位置,預設爲跟網頁檔案一樣的位置
                #$conf["csvFileName"]=".csv";#csv檔案的名稱,預設爲系統時間
                #$conf["noDownload"]="true";#如果爲"true"則代表不要讓使用者下載,但會回傳檔案的相對位置
                */
                function mergePaieedData($conf){
                        
                        #涵式說明:
                        #檢查陣列裡面的特定元素是否存在以及其變數型態是否正確,如果沒有設定則回傳提示訊息。
                        #回傳的結果:
                        #$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
                        #$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
                        #$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
                        #必填寫的參數:
                        $conf["variableCheck"]["isexistMuti"]["varInput"]=$conf;#要檢查的陣列變數
                        $conf["variableCheck"]["isexistMuti"]["variableCheck"]=array("csvFileA","csvFileB","compareColumnName");#要檢查的變數名稱陣列,形態爲陣列變數,例如: $conf["variableCheck"] = array("id","account","password");
                        #可以省略的參數:
                        #$conf["variableType"]=array();#要檢查的陣列變數內的元素應該爲何種變數形態,形態爲陣列 例如: $conf[variableType] = array("string","int","double"); 
                        #$conf["canBeEmptyString"]="false";#變數內容如果是空字串就不能算是有設置的話,請設為"false",預設為也算是有設置。
                        $checkResult=variableCheck::isexistMuti($conf["variableCheck"]["isexistMuti"]);
                        unset($conf["variableCheck"]["isexistMuti"]);
                        
                        #如果檢查不通過
                        if($checkResult["passed"]=="false"){
                                
                                #回傳錯誤訊息
                                return $checkResult;
                                
                                }#if end
                        
                        #初始化要回傳的變數
                        $result=array();
                        
                        #涵式說明:
                        #讀取csv檔案的內容
                        #回傳得結果:
                        #$csvFileContent["line"]["第幾行"]["第幾個欄位"]
                        #如果 $conf["firstLineVarName"]爲"true"的話則會回傳 $csvFileContent["line"]["第幾行"]["第一行各個欄位的名稱"]
                        #必填的參數:
                        $conf["csv"]["loadCsvFile"]["csvFilePositionAndName"]=$conf["csvFileA"];#csv檔案的位置
                        #可省略的參數:
                        $conf["csv"]["loadCsvFile"]["firstLineVarName"]="true";#第一行是否爲變數名稱(各個欄位的名稱)
                        #參考資料來源:
                        #http://www.php.net/manual/en/function.str-split.php
                        #參考資料來源
                        #http://chuangmaster.pixnet.net/blog/post/33560606-%5B%E8%BD%89%E8%B2%BC%5D%E9%97%9C%E6%96%BC%E5%9B%9E%E8%BB%8A(%5Cr)%E8%88%87%E6%8F%9B%E8%A1%8C(%5Cn)
                        $csvFileContentA=csv::loadCsvFile($conf["csv"]["loadCsvFile"]);
                        unset($conf["csv"]["loadCsvFile"]);
                        
                        #涵式說明:
                        #讀取csv檔案的內容
                        #回傳得結果:
                        #$csvFileContent["line"]["第幾行"]["第幾個欄位"]
                        #如果 $conf["firstLineVarName"]爲"true"的話則會回傳 $csvFileContent["line"]["第幾行"]["第一行各個欄位的名稱"]
                        #必填的參數:
                        $conf["csv"]["loadCsvFile"]["csvFilePositionAndName"]=$conf["csvFileB"];#csv檔案的位置
                        #可省略的參數:
                        $conf["csv"]["loadCsvFile"]["firstLineVarName"]="true";#第一行是否爲變數名稱(各個欄位的名稱)
                        #參考資料來源:
                        #http://www.php.net/manual/en/function.str-split.php
                        #參考資料來源
                        #http://chuangmaster.pixnet.net/blog/post/33560606-%5B%E8%BD%89%E8%B2%BC%5D%E9%97%9C%E6%96%BC%E5%9B%9E%E8%BB%8A(%5Cr)%E8%88%87%E6%8F%9B%E8%A1%8C(%5Cn)
                        $csvFileContentB=csv::loadCsvFile($conf["csv"]["loadCsvFile"]);
                        unset($conf["csv"]["loadCsvFile"]);
                        
                        #檢查檔案內容
                        #print_r($csvFileContentA);
                        #echo"<p>";
                        #print_r($csvFileContentB);
                        
                        #取得csv檔案A的資料筆數
                        $DataCountA=count($csvFileContentA["line"]);
                        
                        #取得csv檔案B的資料筆數
                        $DataCountB=count($csvFileContentB["line"]);
                        
                        #初始化合併好的陣列變數
                        $mergedArray=array();
                        
                        #初始化計屬的變數
                        $time=0;
                        
                        #針對csv檔案A的每一筆資料
                        for($i=0;$i<$DataCountA;$i++){
                                
                                #針對csv檔案B的每一筆資料
                                for($j=0;$j<$DataCountB;$j++){
                                        
                                        #如果有發現csv檔案A與檔案B相同欄位的值有相同
                                        if($csvFileContentA["line"][$i][$conf["compareColumnName"]]==$csvFileContentB["line"][$j][$conf["compareColumnName"]]){
                                        
                                                #則將其合併
                                                
                                                #針對檔案A的每一個欄位
                                                foreach($csvFileContentA["line"][$i] as $key=>$value){
                                                        
                                                        #取得每個欄位的內容
                                                        $mergedArray["line"][$time][$key]=$value;
                                                        
                                                        }#foreach end
                                                        
                                                #針對檔案B的每一個欄位
                                                foreach($csvFileContentB["line"][$j] as $key=>$value){
                                                        
                                                        #如果不是要比較的變數欄位
                                                        if($key!=$conf["compareColumnName"]){
                                                                
                                                                }#if end
                                                        
                                                        #取得每個欄位的內容
                                                        $mergedArray["line"][$time][$key]=$value;
                                                        
                                                        }#foreach end
                                                        
                                                #計數加1
                                                $time++;
                                                
                                                }#if end
                                        
                                        }#for end
                                
                                }#for end
                                
                        #將合併結果寫入到檔案裡面
                        #涵式說明:
                        #快速建立一個csv檔案,並且要求使用者下載。
                        #回傳的結果:
                        #如果有設置$conf["noDownload"]爲"true"的話,則會回傳檔案的位置
                        #必填的參數:
                        $conf["csv"]["create"]["dataArray"]=$mergedArray["line"];#要寫入的文字,$conf["dataArray"][$i],代表第 $i 行的內容。
                        #可省略的參數:
                        
                        #如果有設置 $conf["storeFolderName"]
                        if(isset($conf["storeFolderName"])){
                                
                                $conf["csv"]["create"]["storeFolderName"]=$conf["storeFolderName"];
                                
                                }#if end
                                
                        #如果有設置 $conf["csvFileName"]
                        if(isset($conf["csvFileName"])){
                                
                                $conf["csv"]["create"]["csvFileName"]=$conf["csvFileName"];
                                
                                }#if end
                        
                        #如果有設置 $conf["noDownload"]
                        if(isset($conf["noDownload"])){
                                
                                #如果其等於 "true"
                                if($conf["noDownload"]=="true"){
                                        
                                        #設定自動下載檔案
                                        $conf["csv"]["create"]["noDownload"]=$conf["noDownload"];
                                        
                                        }#if end
                                
                                }#if end
                        
                        #$conf["ssv"]["create"]["storeFolderName"]=".csv";#要儲存到哪個位置,預設爲跟網頁檔案一樣的位置
                        #$conf["ssv"]["create"]["csvFileName"]="analyse-mergePaieedData.csv";#csv檔案的名稱,預設爲系統時間
                        #$conf["csv"]["create"]["noDownload"]="true";#如果爲"true"則代表不要讓使用者下載,但會回傳檔案的相對位置
                        #參考資料來源:
                        #http://php.net/manual/en/function.str-split.php
                        return csv::create($conf["csv"]["create"]);
                        unset($conf["csv"]["create"]);          
                        
                        }#function mergePairedData end
                        
                /*
                #涵式說明:
                #刪除多個欄位中其數值符合指定條件的資料
                #回傳的結果:
                #若 $conf["noDownload"] 設為 "true" 則會回傳處理好的相對路徑檔案路徑與名稱
                #必填的參數:
                $conf["csvFileLocation"]="";#要進行處理的csv位置與名稱
                $conf["coditionColumn"]=array();#要檢查的欄位名稱
                $conf["coditionValue"]="";#欄位數值內容若等於多少則符合要移除的條件
                #可省略的參數:
                #$conf["storeFolderName"]="";#要儲存到哪個位置,預設爲跟網頁檔案一樣的位置
                #$conf["csvFileName"]=".csv";#csv檔案的名稱,預設爲系統時間
                #$conf["noDownload"]="true";#如果爲"true"則代表不要讓使用者下載,但會回傳檔案的相對位置
                */
                function delSepecificData($conf){
                                
                        #涵式說明:
                        #檢查陣列裡面的特定元素是否存在以及其變數型態是否正確,如果沒有設定則回傳提示訊息。
                        #回傳的結果:
                        #$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
                        #$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
                        #$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
                        #必填寫的參數:
                        $conf["variableCheck"]["isexistMuti"]["varInput"]=$conf;#要檢查的陣列變數
                        $conf["variableCheck"]["isexistMuti"]["variableCheck"]=array("csvFileLocation","coditionColumn","coditionValue");#要檢查的變數名稱陣列,形態爲陣列變數,例如: $conf["variableCheck"] = array("id","account","password");
                        #可以省略的參數:
                        #$conf["variableType"]=array();#要檢查的陣列變數內的元素應該爲何種變數形態,形態爲陣列 例如: $conf[variableType] = array("string","int","double"); 
                        #$conf["canBeEmptyString"]="false";#變數內容如果是空字串就不能算是有設置的話,請設為"false",預設為也算是有設置。
                        $checkResult=variableCheck::isexistMuti($conf["variableCheck"]["isexistMuti"]);
                        unset($conf["variableCheck"]["isexistMuti"]);
                        
                        #如果檢查不通過
                        if($checkResult["passed"]=="false"){
                                        
                                #回傳錯誤訊息
                                return $checkResult;
                                        
                                }#if end
                                
                        #涵式說明:
                        #讀取csv檔案的內容
                        #回傳得結果:
                        #$csvFileContent["line"]["第幾行"]["第幾個欄位"]
                        #如果 $conf["firstLineVarName"]爲"true"的話則會回傳 $csvFileContent["line"]["第幾行"]["第一行各個欄位的名稱"]
                        #必填的參數:
                        $conf["csv"]["loadCsvFile"]["csvFilePositionAndName"]=$conf["csvFileLocation"];#csv檔案的位置
                        #可省略的參數:
                        $conf["csv"]["loadCsvFile"]["firstLineVarName"]="true";#第一行是否爲變數名稱(各個欄位的名稱)
                        #參考資料來源:
                        #http://www.php.net/manual/en/function.str-split.php
                        #參考資料來源
                        #http://chuangmaster.pixnet.net/blog/post/33560606-%5B%E8%BD%89%E8%B2%BC%5D%E9%97%9C%E6%96%BC%E5%9B%9E%E8%BB%8A(%5Cr)%E8%88%87%E6%8F%9B%E8%A1%8C(%5Cn)
                        $csvFileContent=csv::loadCsvFile($conf["csv"]["loadCsvFile"]);
                        unset($conf["csv"]["loadCsvFile"]);
                                
                        #初始化要紀錄整理好的資料
                        $arrayData=array();
                                
                        #針對每一筆資料
                        for($i=0;$i<count($csvFileContent["line"]);$i++){
                                        
                                #初始化是否要移除的變數為 "false"
                                $del="false";
                                        
                                #如果是標題列
                                if($i!=0){
                                        
                                        #針對每一筆資料的各個欄位
                                        foreach($csvFileContent["line"][$i] as $key=>$value){
                                                        
                                                #有幾個要檢查的欄位就執行幾次
                                                for($j=0;$j<count($conf["coditionColumn"]);$j++){
                                                                
                                                        #如果是要檢查的欄位
                                                        if($key==$conf["coditionColumn"][$j]){
                                                                        
                                                                #檢查其數值是否等於 $conf["coditionValue"]
                                                                if($value==$conf["coditionValue"]){
                                                                                
                                                                        #將是否移除的變數設為"true"
                                                                        $del="true";
                                                                                
                                                                        #跳出 for
                                                                        break;
                                                                                
                                                                        }#if end
                                                                        
                                                                }#if end
                                                                
                                                        }#for end
                                                        
                                                }#foreach end
                                                        
                                        }#end
                                                
                                #如果 $del等於 "false"
                                if($del=="false"){
                                                
                                        #紀錄該筆資料
                                        $arrayData["line"][]=$csvFileContent["line"][$i];
                                                
                                        }#if end
                                        
                                }#for end
                                        
                        #測試處理好的資料內容
                        #return $arrayData;
                        
                        #將處理好的內容轉成csv檔
                        #涵式說明:
                        #快速建立一個csv檔案,並且要求使用者下載。
                        #回傳的結果:
                        #如果有設置$conf["noDownload"]爲"true"的話,則會回傳檔案的位置
                        #必填的參數:
                        $conf["csv"]["create"]["dataArray"]=$arrayData["line"];#要寫入的文字,$conf["dataArray"][$i],代表第 $i 行的內容。
                        #可省略的參數:
                                
                        #如果有設置 $conf["storeFolderName"]
                        if(isset($conf["storeFolderName"])){
                                
                                $conf["csv"]["create"]["storeFolderName"]=$conf["storeFolderName"];
                                
                                }#if end
                                
                        #如果有設置 $conf["csvFileName"]
                        if(isset($conf["csvFileName"])){
                                        
                                $conf["csv"]["create"]["csvFileName"]=$conf["csvFileName"];
                                        
                                }#if end
                                
                        #如果有設置 $conf["noDownload"]
                        if(isset($conf["noDownload"])){
                                        
                                #如果其等於 "true"
                                if($conf["noDownload"]=="true"){
                                                
                                        #設定自動下載檔案
                                        $conf["csv"]["create"]["noDownload"]=$conf["noDownload"];
                                                
                                        }#if end
                                        
                                }#if end
                                
                        #$conf["ssv"]["create"]["storeFolderName"]=".csv";#要儲存到哪個位置,預設爲跟網頁檔案一樣的位置
                        #$conf["ssv"]["create"]["csvFileName"]="analyse-mergePaieedData.csv";#csv檔案的名稱,預設爲系統時間
                        #$conf["csv"]["create"]["noDownload"]="true";#如果爲"true"則代表不要讓使用者下載,但會回傳檔案的相對位置
                        #參考資料來源:
                        #http://php.net/manual/en/function.str-split.php
                        return csv::create($conf["csv"]["create"]);
                        unset($conf["csv"]["create"]);  
                                
                        }#function delSepecificData end
                                
                /*
                #涵式說明:
                #將一個變數變成兩個變數
                #必填的參數:
                $conf["csvFileLocation"]="";#csv檔案的位置
                $conf["addFromVar"]=array("");#要從哪些元素來產生要新的變數內容         
                $conf["newVarName"]="";#資料是新產生的欄位(變數)名稱
                $conf["sameValueColumnName"]="";#使用舊有資料的新欄位(變數)名稱
                #可省略的參數:
                #$conf["newVarValue"]=array();#要增加變數的數值內容陣列,須與$conf["addFromVar"]的元素數量相同。預設與$conf["addFromVar"]相同
                #$conf["storeFolderName"]="";#要儲存到哪個位置,預設爲跟網頁檔案一樣的位置
                #$conf["csvFileName"]=".csv";#csv檔案的名稱,預設爲系統時間
                #$conf["noDownload"]="true";#如果爲"true"則代表不要讓使用者下載,但會回傳檔案的相對位置
                */
                function build2VarForm1($conf){
                                
                        #涵式說明:
                        #檢查陣列裡面的特定元素是否存在以及其變數型態是否正確,如果沒有設定則回傳提示訊息。
                        #回傳的結果:
                        #$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
                        #$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
                        #$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
                        #必填寫的參數:
                        $conf["variableCheck"]["isexistMuti"]["varInput"]=$conf;#要檢查的陣列變數
                        $conf["variableCheck"]["isexistMuti"]["variableCheck"]=array("csvFileLocation","addFromVar","newVarName","sameValueColumnName");#要檢查的變數名稱陣列,形態爲陣列變數,例如: $conf["variableCheck"] = array("id","account","password");
                        #可以省略的參數:
                        #$conf["variableType"]=array();#要檢查的陣列變數內的元素應該爲何種變數形態,形態爲陣列 例如: $conf[variableType] = array("string","int","double"); 
                        #$conf["canBeEmptyString"]="false";#變數內容如果是空字串就不能算是有設置的話,請設為"false",預設為也算是有設置。
                        $checkResult=variableCheck::isexistMuti($conf["variableCheck"]["isexistMuti"]);
                        unset($conf["variableCheck"]["isexistMuti"]);
                                
                        #如果檢查不通過
                        if($checkResult["passed"]=="false"){
                                
                                #回傳錯誤訊息
                                return $checkResult;
                                        
                                }#if end
                        
                        #涵式說明:
                        #讀取csv檔案的內容
                        #回傳得結果:
                        #$csvFileContent["line"]["第幾行"]["第幾個欄位"]
                        #如果 $conf["firstLineVarName"]爲"true"的話則會回傳 $csvFileContent["line"]["第幾行"]["第一行各個欄位的名稱"]
                        #必填的參數:
                        $conf["csv"]["loadCsvFile"]["csvFilePositionAndName"]=$conf["csvFileLocation"];#csv檔案的位置
                        #可省略的參數:
                        $conf["csv"]["loadCsvFile"]["firstLineVarName"]="true";#第一行是否爲變數名稱(各個欄位的名稱)
                        #參考資料來源:
                        #http://www.php.net/manual/en/function.str-split.php
                        #參考資料來源
                        #http://chuangmaster.pixnet.net/blog/post/33560606-%5B%E8%BD%89%E8%B2%BC%5D%E9%97%9C%E6%96%BC%E5%9B%9E%E8%BB%8A(%5Cr)%E8%88%87%E6%8F%9B%E8%A1%8C(%5Cn)
                        $csvFileContent=csv::loadCsvFile($conf["csv"]["loadCsvFile"]);
                        unset($conf["csv"]["loadCsvFile"]);
                        
                        #檢查變數內容
                        #print_r($csvFileContent["line"][0]);
                        #print_r($csvFileContent["line"][1]);
                        
                        #如果 $conf["newVarValue"] 沒有設定
                        if(!isset($conf["newVarValue"])){
                                
                                #則 $conf["newVarValue"] 設為 $conf["addFromVar"]
                                $conf["newVarValue"]=$conf["addFromVar"];
                                
                                }#if end
                        
                        #涵式說明:
                        #從原始的陣列中將一個變數分成兩個變數,並且新增在原始的陣列中
                        #回傳的結果:
                        #經過增加兩個欄位(統計學上的變數)後的陣列變數
                        #$result[n1][n2],爲第n1行的n2欄位數值內容
                        #必填的參數:
                        $conf["math"]["add2Var"]["varArray"]=$csvFileContent["line"];#要處理的陣列變數
                        $conf["math"]["add2Var"]["addFromVar"]=$conf["addFromVar"];#要從哪些元素來產生要新的變數內容            
                        $conf["math"]["add2Var"]["newVarName"]=$conf["newVarName"];#要新增的變數(欄位)名稱
                        $conf["math"]["add2Var"]["newVarValue"]=$conf["newVarValue"];#要增加變數的數值內容陣列,須與$conf["addFromVar"]的元素數量相同。
                        $conf["math"]["add2Var"]["sameValueColumnName"]=$conf["sameValueColumnName"];#要新增的變數(欄位)名稱
                        #可省略的參數:
                        $conf["math"]["add2Var"]["firstLineVarName"]="true";#第一行是否爲變數名稱(各個欄位的名稱)
                        $addedCsvFile=math::add2Var($conf["math"]["add2Var"]);
                        unset($conf["math"]["add2Var"]);

                        #檢查變數內容
                        #print_r($addedCsvFile[0]);echo"<p>";

                        #檢查變數內容
                        #print_r($addedCsvFile[1]);echo"<p>";

                        #將處理好的內容轉成csv檔
                        #涵式說明:
                        #快速建立一個csv檔案,並且要求使用者下載。
                        #回傳的結果:
                        #如果有設置$conf["noDownload"]爲"true"的話,則會回傳檔案的位置
                        #必填的參數:
                        $conf["csv"]["create"]["dataArray"]=$addedCsvFile;#要寫入的文字,$conf["dataArray"][$i],代表第 $i 行的內容。
                        #可省略的參數:
                                
                        #如果有設置 $conf["storeFolderName"]
                        if(isset($conf["storeFolderName"])){
                                
                                $conf["csv"]["create"]["storeFolderName"]=$conf["storeFolderName"];
                                
                                }#if end
                                
                        #如果有設置 $conf["csvFileName"]
                        if(isset($conf["csvFileName"])){
                                        
                                $conf["csv"]["create"]["csvFileName"]=$conf["csvFileName"];
                                        
                                }#if end
                                
                        #如果有設置 $conf["noDownload"]
                        if(isset($conf["noDownload"])){
                                        
                                #如果其等於 "true"
                                if($conf["noDownload"]=="true"){
                                                
                                        #設定自動下載檔案
                                        $conf["csv"]["create"]["noDownload"]=$conf["noDownload"];
                                                
                                        }#if end
                                        
                                }#if end
                                
                        #$conf["ssv"]["create"]["storeFolderName"]=".csv";#要儲存到哪個位置,預設爲跟網頁檔案一樣的位置
                        #$conf["ssv"]["create"]["csvFileName"]="analyse-mergePaieedData.csv";#csv檔案的名稱,預設爲系統時間
                        #$conf["csv"]["create"]["noDownload"]="true";#如果爲"true"則代表不要讓使用者下載,但會回傳檔案的相對位置
                        #參考資料來源:
                        #http://php.net/manual/en/function.str-split.php
                        return csv::create($conf["csv"]["create"]);
                        unset($conf["csv"]["create"]);  
                                                        
                        }#function addSample end
                                
                }# analyse 類別結束

        }#namespace includeV5 end

?>