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"] 爲 0if($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指派爲0for($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 等於 falseif($fileCreateStatus==false){#回傳錯誤訊息return "輸出檔案建立失敗!";}#if end}#if end}#if end#反之沒有設定新檔案的位置與名else{#檢查是否已經執行到這邊#echo "entered!";#在原始檔案路徑下建立新的檔案#取得原始檔案路徑有幾個 "/"$count["pahtSymol"]=substr_count($conf["oriCsvFileAddAndName"],"/");#檢查變內容#var_dump($count["pahtSymol"]);#如果 "/" 等於0if($count["pahtSymol"]==0){#按照預設建立新檔案名稱與位置$conf["newCsvFileAddAndName"]="(已處理過)".$conf["oriCsvFileAddAndName"];}#if end#如果 "/" 大於0if($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 等於 falseif($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.phpreturn 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";#跳出 forbreak;}#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.phpreturn 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.phpreturn csv::create($conf["csv"]["create"]);unset($conf["csv"]["create"]);}#function addSample end}# analyse 類別結束}#namespace includeV5 end?>