Subversion Repositories php-qbpwcf

Rev

Blame | Last modification | View Log | RSS feed

<?php

#宣告指派命名空間
namespace qbpwcf;

#匯入外部套件
include("../allInOne.php");

#測試用的整數陣列
$intArray=array(1,2,3,4,5,6,7,8,9,10);

#測試用的整數陣列
$intArray2=array(2,4,6,8,10,12,14,16,18,20);

#測試用的整數陣列
$intArray3=array(1,19,6,8,10,1,14,16,7,20);

#測試用的整數陣列
$intArrayOutlier=array(1,2,3,400,5,6,7,8,9,10);

#測試用的整數陣列
$intArrayOutlier2=array(1,2,3,4,5,6,7,8,9,10);

#測試用的證書陣列
$intArrayForAbs=array(10,-20,30,-40,50,-60,70,-80,90,-100);

/*

#說明正在測試的內容
echo"<hr>math::computeSum - testCase 1<br>";

#涵式說明:
#計算總和,結果會回傳一個數值。
#必填的參數:
$conf["rawDataArray"]=$intArray;#爲原始資料的一維陣列
var_dump(math::computeSum($conf));
unset($conf);

*/

/*

#說明正在測試的內容
echo"<hr>math::computeMean - testCase 1<br>";

#涵式說明:
#計算平均數,結果會回傳一數值。
#必填的參數:
$conf["rawDataArray"]=$intArray;#爲原始資料的一維陣列
var_dump(math::computeMean($conf));
unset($conf);

*/

/*


#說明正在測試的內容
echo"<hr>math::computeStandardDeviation - testCase 1<br>";

#涵式說明:
#計算標準差,結果會回傳標準差
#必填的參數:
$conf["rawDataArray"]=$intArray;#爲原始資料的一維陣列
var_dump(math::computeStandardDeviation($conf));
unset($conf);

*/

/*

#說明正在測試的內容
echo"<hr>math::zScoreNormalization - testCase 1<br>";

#涵式說明:
#將數值透過 z-score normalization(zero-mean normalization) 進行正規化,結果會回傳一個陣列 。
#回傳的結果:
#$result["newValue"][0]爲第1個數字經過正規化後的結果,$result["newValue"][1]爲第2個數字經過正規化後的結果。
#$result["oldValue"][0]爲第1個數字的原始內容,$result["oldValue"][1]爲第2個數字的原始內容。
#必填的參數:
$conf["rawDataArray"]=$intArray;#爲原始資料的一維陣列。
var_dump(math::zScoreNormalization($conf));
unset($conf);

*/

/*

#說明正在測試的內容
echo"<hr>math::computeCorrelationCoefficientForNumbericData - testCase 1<br>";

#涵式說明:
#求算相關係數(皮爾森係數),結果會回傳1數值。
#回傳結果:
#$result["status"],執行是否成功的識別,"true"代表執行正常,"false"代表執行不正常.
#$result["error"],錯誤訊息陣列.
#$result["function"],當前執行的函數名稱.
#$result["content"],相關係數(皮爾森係數).
#必填的參數:
$conf["rawDataArrayA"]=$intArray;#爲第1組數據,元素數量須與$rawDataArray["B"]一樣。
$conf["rawDataArrayB"]=$intArray2;#爲第2組數據,元素數量須與$rawDataArray["A"]一樣。
var_dump(math::computeCorrelationCoefficientForNumbericData($conf));
unset($conf);

*/

/*

#說明正在測試的內容
echo"<hr>math::getMaxValue - testCase 1<br>";

#涵式說明:
#找最大值,結果會回傳最大值
#回傳的結果
#$result["key"],最大值原先的key.
#$result["value"],最大值的數字
#必填的參數:
$conf["rawDataArray"]=$intArrayOutlier;#爲原始數據
var_dump(math::getMaxValue($conf));
unset($conf);

*/

/*

#說明正在測試的內容
echo"<hr>math::getMinValue - testCase 1<br>";

#涵式說明
#找最小值,結果會回傳最小值
#回傳的內容
#陣列裏面最小的數值
#必填的參數:
$conf["rawDataArray"]=$intArrayOutlier;#爲原始數據
var_dump(math::getMinValue($conf));
unset($conf);

*/

/*

#說明正在測試的內容
echo"<hr>math::computeCovarianceOfNumericData - testCase 1<br>";

#涵式說明:
#計算兩組數字數據的共變異數,結果會回傳一個
#必填的參數:
$conf["rawDataArrayA"]=$intArray;#爲第1組數據
$conf["rawDataArrayB"]=$intArray3;#爲第2組數據
var_dump(math::computeCovarianceOfNumericData($conf));
unset($conf);

*/

/*

#說明正在測試的內容
echo"<hr>math::arrangeNum - testCase 1<br>";

#涵式說明:
#排列一組數字
#回傳的結果:
#經過排序後依照遞增或遞減順序排列的數字陣列
#$result["status"],執行是否正常,"true"為正常,"false"為不正常.
#$result["error"],錯誤訊息陣列.
#$result["function"],當前執行的函數名稱.
#$result["key"][$i],過排序後依照遞增或遞減順序排列的數字陣列的第$i-1個元素的key
#$result["value"][$i],過排序後依照遞增或遞減順序排列的數字陣列的第$i-1個元素的value
#$resutt["content"],過排序後依照遞增或遞減順序排列的數字陣列.
#必填的參數:
$conf["rawDataArray"]=$intArrayOutlier;#要排序的數字陣列
#可省略的參數:
#$conf["asc"]="true";#如果爲"true"則排序順變爲從小到大,若為"false"則為從大到小,預設為"false".
var_dump(math::arrangeNum($conf));
unset($conf);

*/

/*

#說明正在測試的內容
echo"<hr>math::getMedianNum - testCase 1<br>";

#涵式說明:
#計算一組數據的中間數值
#回傳的結果:
#$result["status"],執行是否正常,"true"為正常,"false"為不正常.
#$result["error"],錯誤訊息陣列.
#$result["function"],當前執行的函數名稱.
#$result["content"],最一組數據的中間數值.
#必填的參數:
$conf["rawDataArray"]=$intArrayOutlier;#要進行計算的數據陣列
var_dump(math::getMedianNum($conf));
unset($conf);

*/

/*

#說明正在測試的內容
echo"<hr>math::getQuartile - testCase 1<br>";

#涵式說明:
#取得Q1、Q2、Q3(四分位數)
#回傳的結果:
#$result["Q1"],Q1值
#$result["Q2"],Q2值
#$result["Q3"],Q3值
#必填的參數:
$conf["rawDataArray"]=$intArrayOutlier;#要求算四分位的數據
#參考資料:
#https://zh.wikipedia.org/zh-tw/%E5%9B%9B%E5%88%86%E4%BD%8D%E6%95%B0
var_dump(math::getQuartile($conf));
unset($conf);

*/

/*

#說明正在測試的內容
echo"<hr>math::findOutlier - testCase 1<br>";

#涵式說明:
#此函式還在debug中....
#判斷在常態分佈的條件下針對單一變量會有那些 outlier(異常值),結果會回傳一個陣列。
#回傳的結果:
#一個含有離羣值的陣列,若爲false則爲沒有異常數值。
#必填的參數:
$conf["rawDataArray"]=$intArrayOutlier;#爲原始數據的陣列
#參考資料來源:
#http://zhidao.baidu.com/question/252394894.html        
var_dump(math::findOutlier($conf));
unset($conf);

*/

/*

#說明正在測試的內容
echo"<hr>math::findOutlier - testCase 2<br>";

#涵式說明:
#此函式還在debug中....
#判斷在常態分佈的條件下針對單一變量會有那些 outlier(異常值),結果會回傳一個陣列。
#回傳的結果:
#一個含有離羣值的陣列,若爲false則爲沒有異常數值。
#必填的參數:
$conf["rawDataArray"]=$intArrayOutlier2;#爲原始數據的陣列
#參考資料來源:
#http://zhidao.baidu.com/question/252394894.html        
var_dump(math::findOutlier($conf));
unset($conf);

*/

/*

#說明正在測試的內容
echo"<hr>math::getMaxAbsoluteValue - testCase 1<br>";

#涵式說明
#找絕對值後的最大值,結果會回傳最大值
#回傳的結果:
#$result["status"],執行是否正常,"true"為正常,"false"為不正常.
#$result["error"],錯誤訊息陣列.
#$result["function"],當前執行的函數名稱.
#$result["key"],絕對值後的最大值原先的key.
#$result["value"],絕對值前的最大值數字.
#$result["absValue"],絕對值後的最大值數字.
#必填的參數:
$conf["rawDataArray"]=$intArrayForAbs;#爲原始數據
var_dump(math::getMaxAbsoluteValue($conf));
unset($conf);

*/

/*

#說明正在測試的內容
echo"<hr>math::getMinAbsoluteValue - testCase 1<br>";

#涵式說明:
#找絕對值後的最小值
#回傳的結果:
#$result["status"],執行是否正常,"true"為正常,"false"為不正常.
#$result["error"],錯誤訊息陣列.
#$result["function"],當前執行的函數名稱.
#$result["key"],絕對值後的最小值原先的key.
#$result["value"],絕對值前的最小值數字.
#$result["absValue"],絕對值後的最小值數字.
#必填的參數:
$conf["rawDataArray"]=$intArrayForAbs;#爲原始數據
var_dump(math::getMinAbsoluteValue($conf));
unset($conf);

*/

/*

#說明正在測試的內容
echo"<hr>math::minMaxNormalization - testCase 1<br>";

#涵式說明:
#使用 min-max normalization 來正規化一組數據,結果會回傳一組正規化後的數據,$newDataArray[$i]爲該筆資料的第i筆經過正規化後的數值。
#回傳的結果:
#$result["original"] 爲回傳後的原始數據陣列,$result爲回傳後給與的變數名稱,可自行改變。
#$result["normalizationed"] 爲正規化後的陣列數據
#必填的參數:
$conf["rawDataArray"]=$intArray2;#爲傳入的原始數據參數
var_dump(math::minMaxNormalization($conf));
unset($conf);

*/

/*

#說明正在測試的內容
echo"<hr>math::findJvalue - testCase 1<br>";

#涵式說明:
#求算該值需要10的幾次方去除才會最接近1,但小於1。
#回傳的內容:
#Jvalue,n值需要10的幾次方去除才會最接近1,但小於1。
#必填的參數:
$conf["num"]="10";#爲輸入的數值
var_dump(math::findJvalue($conf));
unset($conf);

*/

/*

#說明正在測試的內容
echo"<hr>math::computeDecimalScaling - testCase 1<br>";

#涵式說明:
#透過 Decimal scaling 來縮放原始數據
#回傳的結果:
#經過Decimal scaling縮放後的數據陣列
#必填的參數:
$conf["rawDataArray"]=$intArray2;#爲傳入的原始數據參數
var_dump(math::computeDecimalScaling($conf));
unset($conf);

*/

/*

#說明正在測試的內容
echo"<hr>math::add2Var<br>";

#該程序會跑很久...所以先註解掉

#涵式說明:
#讀取csv檔案的內容
#回傳得結果:
#$csvFileContent["line"]["第幾行"]["第幾個欄位"]
#如果 $conf["firstLineVarName"]爲"true"的話則會回傳 $csvFileContent["line"]["第幾行"]["第一行各個欄位的名稱"]
#必填的參數:
#$conf["csvFilePositionAndName"]="smallSample.csv";#csv檔案的位置
$conf["csvFilePositionAndName"]="已踢除特定欄位含有0的樣本.csv";#csv檔案的位置 
$conf["fileArgu"]=__FILE__;
#可省略的參數:
$conf["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);
unset($conf);

#如果讀取csv檔案失敗
if($csvFileContent["status"]=="false"){
        
        #印出訊息
        var_dump($csvFileContent);
        
        #結束執行
        exit;
        
        }#if end

#涵式說明:
#從原始的陣列中將一個變數分成兩個變數,並且新增在原始的陣列中
#回傳的結果:
#經過增加兩個欄位(統計學上的變數)後的陣列變數
#$result[n1][n2],爲第n1行的n2欄位數值內容
#必填的參數:
$conf["varArray"]=$csvFileContent["csvFileContent"];#要處理的陣列變數
#$conf["addFromVar"]=array("\"A0\"","\"A1\"","\"A3\"","\"A5\"","\"C1\"","\"B1\"","\"B3\"","\"B5\"","\"B6\"","\"B7\"","\"B9\"","\"B11\"","\"B12\"","\"B13\"","\"A7\"","\"A9\"","\"A11\"");#要從哪些元素來產生要新的變數內容              
$conf["addFromVar"]=array("A0","A1","A3","A5","C1","B1","B3","B5","B6","B7","B9","B11","B12","B13","A7","A9","A11");#要從哪些元素來產生要新的變數內容
$conf["newVarName"]="停留的地點名稱";#要新增的變數(欄位)名稱
#$conf["newVarValue"]=array("\"A0展廳\"","\"A1展廳\"","\"A3展廳\"","\"A5展廳\"","\"C1展廳\"","\"B1展廳\"","\"B3展廳\"","\"B5展廳\"","\"B6展廳\"","\"B7展廳\"","\"B9展廳\"","\"B11展廳\"","\"B12展廳\"","\"B13展廳\"","\"A7展廳\"","\"A9展廳\"","\"A11展廳\"");#要增加變數的數值內容陣列,須與$conf["addFromVar"]的元素數量相同。
$conf["newVarValue"]=array("A0展廳","A1展廳","A3展廳","A5展廳","C1展廳","B1展廳","B3展廳","B5展廳","B6展廳","B7展廳","B9展廳","B11展廳","B12展廳","B13展廳","A7展廳","A9展廳","A11展廳");#要增加變數的數值內容陣列,須與$conf["addFromVar"]的元素數量相同。
$conf["sameValueColumnName"]="停留的時間";#要新增的變數(欄位)名稱
#可省略的參數:
$conf["firstLineVarName"]="true";#第一行是否爲變數名稱(各個欄位的名稱)
$addedCsvFile=analyse::add2Var($conf);
unset($conf);

#如果將一個變數分成兩個變數失敗
if($addedCsvFile["status"]=="false"){
        
        #印出訊息
        var_dump($addedCsvFile);
        
        #結束執行
        exit;
        
        }#if end

#涵式說明:
#快速建立一個csv檔案,並且要求使用者下載。
#回傳的結果:
#如果有設置$conf["noDownload"]爲"true"的話,則會回傳檔案的位置
#必填的參數:
$conf["dataArray"]=$addedCsvFile;#要寫入的文字,$conf["dataArray"][$i],代表第 $i 行的內容。
$conf["fileArgu"]=__FILE__;
#可省略的參數:
$conf["csvFilePathAndName"]="csvT/98問卷與定位資料整合擴充版(已踢除展廳停留時間爲0者)";#要儲存到哪個位置,預設爲跟網頁檔案一樣的位置
$conf["noDownload"]="true";#如果爲"true"則代表不要讓使用者下載,但會回傳檔案的相對位置
$create=csv::create($conf);
unset($conf);

#如果建立csv檔案失敗
if($create["status"]=="false"){
        
        #印出訊息
        var_dump($create);
        
        #結束程式
        exit;
        
        }#if end

#debug
var_dump($create);

*/

/*

#說明正在測試的內容
echo"<hr>math::eraseContainZeroData - testCase 1<br>";

#涵式說明:
#讀取csv檔案的內容
#回傳得結果:
#$result["status"],執行是否正常,"true"代表正常;"false"代表不正常.
#$result["error"],錯誤訊息陣列.
#$result["function"],當前執行的函數名稱.
#$result["csvFileContent"],csv檔案內容的陣列.
        #$result["csvFileContent"]["$i"]["$j"]代表第$i+1列第$j+1欄位的內容.
        #如果 $conf["firstLineVarName"]爲"true"的話則會多回傳 $result["csvFileContent"]["第幾列"]["第一列各個欄位的名稱"]
#$result["lineArray"],csv檔案逐列內容的陣列.
#$result["lineArrayCount"],總共幾列資料.
#如果 $conf["firstLineVarName"]爲"true"的話則會回傳 $csvFileContent["line"]["第幾行"]["第一行各個欄位的名稱"]
#必填的參數:
$conf["csvFilePositionAndName"]="mathT/欄位含有0的簡單樣本.csv";#csv檔案的位置
$conf["fileArgu"]=__FILE__;
#可省略的參數:
$conf["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);
unset($conf);

#如果取得csv檔案的內容失敗
if($csvFileContent["status"]=="false"){
        
        #印出相關資訊
        var_dump($csvFileContent);
        
        #停止程式
        exit;
        
        }#if end

#涵式說明:
#將用於統計分析的原始陣列裏面,每筆資料的特定欄位爲0的時候,將該筆樣本踢除
#回傳的結果:
#$result[lineNumber]["columnName"],lineNumber爲第幾行;columnName爲欄位的名稱,若沒有標題列將會以數字的0、1、2、3~n去排列
#必填的參數:
$conf["varArray"]=$csvFileContent["csvFileContent"];#要處理的陣列變數
#$conf["checkedColumn"]=array("\"A0\"","\"A1\"","\"A3\"","\"A5\"","\"C1\"","\"B1\"","\"B3\"","\"B5\"","\"B6\"","\"B7\"","\"B9\"","\"B11\"","\"B12\"","\"B13\"","\"A7\"","\"A9\"","\"A11\"");#要檢測是否含有0的欄位名稱;亦即 $conf["varArray"]["columnName"] 的 columnName 爲何。如果原始陣列沒有特別指定,則會以數字的0、1、2、3~n去排列
$conf["checkedColumn"]=array("A1","A2","A3");#要檢測是否含有0的欄位名稱;亦即 $conf["varArray"]["columnName"] 的 columnName 爲何。如果原始陣列沒有特別指定,則會以數字的0、1、2、3~n去排列
#可省略的參數:
$cleanedData=math::eraseContainZeroData($conf);
unset($conf);

#如果清理失敗
if($cleanedData["status"]=="false"){
        
        #印出相關資訊
        var_dump($cleanedData);
        
        #停止程式
        exit;
        
        }#if end

#涵式說明:
#快速建立一個csv檔案,並且要求使用者下載。
#回傳的結果:
#如果有設置$conf["noDownload"]爲"true"的話,則會回傳檔案的位置
#必填的參數:
$conf["dataArray"]=$cleanedData["content"];#要寫入的文字,$conf["dataArray"][$i],代表第 $i 行的內容。
$conf["fileArgu"]=__FILE__;
#可省略的參數:
$conf["csvFilePathAndName"]="mathT/已踢除特定欄位含有0的簡單樣本";#要儲存到哪個位置,預設爲跟網頁檔案一樣的位置
$conf["noDownload"]="true";#如果爲"true"則代表不要讓使用者下載,但會回傳檔案的相對位置
$create=csv::create($conf);
unset($conf);

#如果建立csv檔失敗
if($create["status"]=="false"){
        
        #印出相關資訊
        var_dump($create);
        
        #停止程式
        exit;
        
        }#if end

#涵式說明:
#放置超鏈結
#回傳的結果:
#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
#$result["error"],錯誤訊息
#$result["content"],語法
#$result["function"],當前執行的函數名稱
#必填的參數:
#$conf["position"],字串,爲要連結到的位置,若留空,將回自動變成"#",則可以搭配ajax傳值.   
$conf["position"]=$create["content"];
#$conf["linkName",字串,爲連結的顯示名稱
$conf["linkName"]="輸出的csv檔案";
#可省略的參數:
#$conf["method"],字串,爲點選連結後,新畫面要如何呈現,可省略預設爲"_self",可用的選項有 _top(覆蓋目前的視窗來顯現新內容) _parent _self _blank(跳新視窗)
$conf["method"]="_blank"; 
#$conf["class"],字串,爲要套用的css超連節樣式,可省略.
#$conf["class"]="";
#$conf["id"],字串,超連結的id.
#$conf["id"]="";
#$conf["no_outline"],字串,是否要取消連結的框線,"false為不取消,"true"代表要取消,預設為"false".
#$conf["no_outline"]="";
$show_link=link::show_link($conf);
unset($conf);

#如果建立超聯結失敗
if($show_link["status"]=="false"){
        
        #印出訊息
        var_dump($show_link);
        
        #終止程式
        exit;
        
        }#if end
        
#印出超聯結
echo $show_link["content"];

*/

/*

#說明正在測試的內容
echo"<hr>math::eraseContainZeroData - testCase 2<br>";

#涵式說明:
#讀取csv檔案的內容
#回傳得結果:
#$result["status"],執行是否正常,"true"代表正常;"false"代表不正常.
#$result["error"],錯誤訊息陣列.
#$result["function"],當前執行的函數名稱.
#$result["csvFileContent"],csv檔案內容的陣列.
        #$result["csvFileContent"]["$i"]["$j"]代表第$i+1列第$j+1欄位的內容.
        #如果 $conf["firstLineVarName"]爲"true"的話則會多回傳 $result["csvFileContent"]["第幾列"]["第一列各個欄位的名稱"]
#$result["lineArray"],csv檔案逐列內容的陣列.
#$result["lineArrayCount"],總共幾列資料.
#如果 $conf["firstLineVarName"]爲"true"的話則會回傳 $csvFileContent["line"]["第幾行"]["第一行各個欄位的名稱"]
#必填的參數:
$conf["csvFilePositionAndName"]="mathT/98問卷填寫與定位資訊(需要將展廳停留時間爲0的樣本踢除)-小樣本版.csv";#csv檔案的位置
$conf["fileArgu"]=__FILE__;
#可省略的參數:
$conf["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);
unset($conf);

#如果取得csv檔案的內容失敗
if($csvFileContent["status"]=="false"){
        
        #印出相關資訊
        var_dump($csvFileContent);
        
        #停止程式
        exit;
        
        }#if end

#涵式說明:
#將用於統計分析的原始陣列裏面,每筆資料的特定欄位爲0的時候,將該筆樣本踢除
#回傳的結果:
#$result[lineNumber]["columnName"],lineNumber爲第幾行;columnName爲欄位的名稱,若沒有標題列將會以數字的0、1、2、3~n去排列
#必填的參數:
$conf["varArray"]=$csvFileContent["csvFileContent"];#要處理的陣列變數
$conf["checkedColumn"]=array("A0","A1","A3","A5","C1","B1","B3","B5","B6","B7","B9","B11","B12","B13","A7","A9","A11");#要檢測是否含有0的欄位名稱;亦即 $conf["varArray"]["columnName"] 的 columnName 爲何。如果原始陣列沒有特別指定,則會以數字的0、1、2、3~n去排列
#可省略的參數:
$cleanedData=math::eraseContainZeroData($conf);
unset($conf);

#如果清理失敗
if($cleanedData["status"]=="false"){
        
        #印出相關資訊
        var_dump($cleanedData);
        
        #停止程式
        exit;
        
        }#if end

#涵式說明:
#快速建立一個csv檔案,並且要求使用者下載。
#回傳的結果:
#如果有設置$conf["noDownload"]爲"true"的話,則會回傳檔案的位置
#必填的參數:
$conf["dataArray"]=$cleanedData["content"];#要寫入的文字,$conf["dataArray"][$i],代表第 $i 行的內容。
$conf["fileArgu"]=__FILE__;
#可省略的參數:
$conf["csvFilePathAndName"]="mathT/已踢除特定欄位含有0的樣本";#要儲存到哪個位置,預設爲跟網頁檔案一樣的位置
$conf["noDownload"]="true";#如果爲"true"則代表不要讓使用者下載,但會回傳檔案的相對位置
$create=csv::create($conf);
unset($conf);

#如果建立csv檔失敗
if($create["status"]=="false"){
        
        #印出相關資訊
        var_dump($create);
        
        #停止程式
        exit;
        
        }#if end

#涵式說明:
#放置超鏈結
#回傳的結果:
#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
#$result["error"],錯誤訊息
#$result["content"],語法
#$result["function"],當前執行的函數名稱
#必填的參數:
#$conf["position"],字串,爲要連結到的位置,若留空,將回自動變成"#",則可以搭配ajax傳值.   
$conf["position"]=$create["content"];
#$conf["linkName",字串,爲連結的顯示名稱
$conf["linkName"]="輸出的csv檔案";
#可省略的參數:
#$conf["method"],字串,爲點選連結後,新畫面要如何呈現,可省略預設爲"_self",可用的選項有 _top(覆蓋目前的視窗來顯現新內容) _parent _self _blank(跳新視窗)
$conf["method"]="_blank"; 
#$conf["class"],字串,爲要套用的css超連節樣式,可省略.
#$conf["class"]="";
#$conf["id"],字串,超連結的id.
#$conf["id"]="";
#$conf["no_outline"],字串,是否要取消連結的框線,"false為不取消,"true"代表要取消,預設為"false".
#$conf["no_outline"]="";
$show_link=link::show_link($conf);
unset($conf);

#如果建立超聯結失敗
if($show_link["status"]=="false"){
        
        #印出訊息
        var_dump($show_link);
        
        #終止程式
        exit;
        
        }#if end
        
#印出超聯結
echo $show_link["content"];

*/      

/*

#說明正在測試的內容
echo"<hr>math::changeToIntValue - testCase 1<br>";

#函式說明:
#將陣列裡面小於等於自己的正整數或大於等於自己的負整數
#回傳的結果:
#$result["status"],執行是否成功的識別,"true"代表執行正常,"false"代表執行不正常.
#$result["error"],錯誤訊息陣列.
#$result["function"],當前執行的函數名稱.
#$result["content"],處理好的整數陣列.
#必填的參數:
#$conf["inputArray"],字串陣列,要取整數的數字陣列.
$conf["inputArray"]=array("-0.003","3.3","9.7","-10.5","0.23");
#可省略的參數:
#無
#餐考資料來源:
#http://tw2.php.net/manual/en/function.round.php
var_dump(math::changeToIntValue($conf));
unset($conf);

*/

/*

#說明正在測試的內容
echo"<hr>math::randomFromArray - testCase 1<br>";

#測試用於產出亂數的陣列
$randomArray=array("0","1","2","3","4","5","6","7","8","9"); 
 
#函式說明: 
#亂數產生特定陣列裡面的內容
#回傳的結果:
#$result["status"],執行正常與否,"true"為正常,"false"為不正常.
#$result["function"],當前執行的函數名稱.
#$result["error"],錯誤訊息陣列.
#$result["content"]["name"],產生的元素在$conf["randomArray"]裡面的key是?
#$result["content"]["value"],產生的元素內容.
#必填參數:
#$conf["randomArray"],字串陣列,要隨機產生的元素.
$conf["randomArray"]=$randomArray;
#可省略參數:
#無
var_dump(math::randomFromArray($conf));
unset($conf);
 
*/ 

/*

#說明正在測試的內容
echo"<hr>math::key2value - testCase 1<br>";

#跑 256 次
for($i=0;$i<=255;$i++){

        #設置左手範圍
        $rangeF[]=$i;

        }#for end

#函式說明: 
#左方數值範圍要對應的右方數值範圍
#回傳的結果:
#$result["status"],執行正常與否,"true"為正常,"false"為不正常.
#$result["function"],當前執行的函數名稱.
#$result["error"],錯誤訊息陣列.
#$result["argu"],使用的參數.
#必填參數:
#$conf["rangeF"],整數陣列,要產生對應表的左手方
$conf["rangeF"]=$rangeF;
#可省略參數:
#$conf["rangeT"],整數陣列,要產生對應表的右手方,預設為0到100的整數.
#$conf["rangeT"]=array();
#備註:
#建構中.
$key2value=math::key2value($conf);
unset($conf);

#如果執行失敗
if($key2value["status"]==="false"){

        #印出結果
        var_dump($key2value);

        #結束執行
        exit;

        }#if end
        
#印出結果
var_dump($key2value);   

*/

/*

#說明正在測試的內容
echo"<hr>math::key2value - testCase 2<br>";

#跑 101 次
for($i=0;$i<=100;$i++){

        #設置左手範圍
        $rangeF[]=$i;

        }#for end

#跑 256 次
for($i=0;$i<=255;$i++){

        #設置左手範圍
        $rangeT[]=$i;

        }#for end

#函式說明: 
#左方數值範圍要對應的右方數值範圍
#回傳的結果:
#$result["status"],執行正常與否,"true"為正常,"false"為不正常.
#$result["function"],當前執行的函數名稱.
#$result["error"],錯誤訊息陣列.
#$result["argu"],使用的參數.
#必填參數:
#$conf["rangeF"],整數陣列,要產生對應表的左手方
$conf["rangeF"]=$rangeF;
#可省略參數:
#$conf["rangeT"],整數陣列,要產生對應表的右手方,預設為0到100的整數.
$conf["rangeT"]=$rangeT;
#備註:
#建構中.
$key2value=math::key2value($conf);
unset($conf);

#如果執行失敗
if($key2value["status"]==="false"){

        #印出結果
        var_dump($key2value);

        #結束執行
        exit;

        }#if end
        
#印出結果
var_dump($key2value);   

*/

/*

#說明正在測試的內容
echo"<hr>math::key2value - testCase 3<br>";

#跑 255 次
for($i=0;$i<=254;$i++){

        #設置左手範圍
        $rangeF[]=$i;

        }#for end

#跑100次
for($i=1;$i<=100;$i++){

        #設置左手範圍
        $rangeT[]=$i;

        }#for end

#函式說明: 
#左方數值範圍要對應的右方數值範圍
#回傳的結果:
#$result["status"],執行正常與否,"true"為正常,"false"為不正常.
#$result["function"],當前執行的函數名稱.
#$result["error"],錯誤訊息陣列.
#$result["argu"],使用的參數.
#必填參數:
#$conf["rangeF"],整數陣列,要產生對應表的左手方
$conf["rangeF"]=$rangeF;
#可省略參數:
#$conf["rangeT"],整數陣列,要產生對應表的右手方,預設為0到100的整數.
$conf["rangeT"]=$rangeT;
#備註:
#建構中.
$key2value=math::key2value($conf);
unset($conf);

#如果執行失敗
if($key2value["status"]==="false"){

        #印出結果
        var_dump($key2value);

        #結束執行
        exit;

        }#if end
        
#印出結果
var_dump($key2value);   

*/

/*

#說明正在測試的內容
echo"<hr>math::value2key - testCase 1<br>";

#跑 256 次
for($i=0;$i<=255;$i++){

        #設置左手範圍
        $rangeF[]=$i;

        }#for end

#函式說明: 
#左方數值範圍要對應的右方數值範圍
#回傳的結果:
#$result["status"],執行正常與否,"true"為正常,"false"為不正常.
#$result["function"],當前執行的函數名稱.
#$result["error"],錯誤訊息陣列.
#$result["argu"],使用的參數.
#必填參數:
#$conf["rangeF"],整數陣列,要產生對應表的左手方
$conf["rangeF"]=$rangeF;
#可省略參數:
#$conf["rangeT"],整數陣列,要產生對應表的右手方,預設為0到100的整數.
#$conf["rangeT"]=array();
#備註:
#建構中.
$key2value=math::key2value($conf);
unset($conf);

#如果執行失敗
if($key2value["status"]==="false"){

        #印出結果
        var_dump($key2value);

        #結束執行
        exit;

        }#if end

#函式說明: 
#數值對應的key
#回傳的結果:
#$result["status"],執行正常與否,"true"為正常,"false"為不正常.
#$result["function"],當前執行的函數名稱.
#$result["error"],錯誤訊息陣列.
#$result["argu"],使用的參數.
#必填參數:
#$conf["value"],浮點數,要尋找對應的數值.
$conf["value"]=(double)(57);
#$conf["reference"],整數陣列,透過math::key2value產生的對照表.
$conf["reference"]=$key2value["content"];
#可省略參數:
#無
$value2key=math::value2key($conf);
unset($conf);

#如果執行失敗
if($value2key["status"]==="false"){

        #印出結果
        var_dump($value2key);

        #結束執行
        exit;

        }#if end
        
#印出結果
var_dump($value2key);   

*/

/*

#說明正在測試的內容
echo"<hr>math::value2key - testCase 2<br>";

#跑 256 次
for($i=0;$i<=255;$i++){

        #設置左手範圍
        $rangeF[]=$i;

        }#for end

#函式說明: 
#左方數值範圍要對應的右方數值範圍
#回傳的結果:
#$result["status"],執行正常與否,"true"為正常,"false"為不正常.
#$result["function"],當前執行的函數名稱.
#$result["error"],錯誤訊息陣列.
#$result["argu"],使用的參數.
#必填參數:
#$conf["rangeF"],整數陣列,要產生對應表的左手方
$conf["rangeF"]=$rangeF;
#可省略參數:
#$conf["rangeT"],整數陣列,要產生對應表的右手方,預設為0到100的整數.
#$conf["rangeT"]=array();
#備註:
#建構中.
$key2value=math::key2value($conf);
unset($conf);

#如果執行失敗
if($key2value["status"]==="false"){

        #印出結果
        var_dump($key2value);

        #結束執行
        exit;

        }#if end

#針對每個可能的數值
for($i=0;$i<=100;$i++){

        #函式說明: 
        #數值對應的key
        #回傳的結果:
        #$result["status"],執行正常與否,"true"為正常,"false"為不正常.
        #$result["function"],當前執行的函數名稱.
        #$result["error"],錯誤訊息陣列.
        #$result["argu"],使用的參數.
        #必填參數:
        #$conf["value"],浮點數,要尋找對應的數值.
        $conf["value"]=(double)($i);
        #$conf["reference"],整數陣列,透過math::key2value產生的對照表.
        $conf["reference"]=$key2value["content"];
        #可省略參數:
        #無
        $value2key=math::value2key($conf);
        unset($conf);

        #如果執行失敗
        if($value2key["status"]==="false"){

                #印出結果
                var_dump($value2key);

                #結束執行
                exit;

                }#if end
                
        #印出結果
        echo $i."<=>".$value2key["content"]."<br>";     

        }#for enb

*/

/*

#說明正在測試的內容
echo"<hr>math::value2key - testCase 3<br>";

#跑 101 次
for($i=0;$i<=100;$i++){

        #設置左手範圍
        $rangeF[]=$i;

        }#for end

#跑 256 次
for($i=0;$i<=255;$i++){

        #設置左手範圍
        $rangeT[]=$i;

        }#for end

#函式說明: 
#左方數值範圍要對應的右方數值範圍
#回傳的結果:
#$result["status"],執行正常與否,"true"為正常,"false"為不正常.
#$result["function"],當前執行的函數名稱.
#$result["error"],錯誤訊息陣列.
#$result["argu"],使用的參數.
#必填參數:
#$conf["rangeF"],整數陣列,要產生對應表的左手方
$conf["rangeF"]=$rangeF;
#可省略參數:
#$conf["rangeT"],整數陣列,要產生對應表的右手方,預設為0到100的整數.
$conf["rangeT"]=$rangeT;
#備註:
#建構中.
$f100t255=math::key2value($conf);
unset($conf);

#如果執行失敗
if($f100t255["status"]==="false"){

        #印出結果
        var_dump($f100t255);

        #結束執行
        exit;

        }#if end
        
#0~100對應0~255的表
$f100t255=$f100t255["content"];

#初始化
$rangeF=array();

#跑 256 次
for($i=0;$i<=255;$i++){

        #設置左手範圍
        $rangeF[]=$i;

        }#for end

#函式說明: 
#左方數值範圍要對應的右方數值範圍
#回傳的結果:
#$result["status"],執行正常與否,"true"為正常,"false"為不正常.
#$result["function"],當前執行的函數名稱.
#$result["error"],錯誤訊息陣列.
#$result["argu"],使用的參數.
#必填參數:
#$conf["rangeF"],整數陣列,要產生對應表的左手方
$conf["rangeF"]=$rangeF;
#可省略參數:
#$conf["rangeT"],整數陣列,要產生對應表的右手方,預設為0到100的整數.
#$conf["rangeT"]=array();
#備註:
#建構中.
$f255t100=math::key2value($conf);
unset($conf);

#如果執行失敗
if($f255t100["status"]==="false"){

        #印出結果
        var_dump($f255t100);

        #結束執行
        exit;

        }#if end

#0~255對應0~100的表
$f255t100=$f255t100["content"];

#跑100次,修正轉換誤差.
for($i=0;$i<=100;$i++){

        #函式說明: 
        #數值對應的key
        #回傳的結果:
        #$result["status"],執行正常與否,"true"為正常,"false"為不正常.
        #$result["function"],當前執行的函數名稱.
        #$result["error"],錯誤訊息陣列.
        #$result["argu"],使用的參數.
        #必填參數:
        #$conf["value"],浮點數,要尋找對應的數值.
        $conf["value"]=(double)($i);
        #$conf["reference"],整數陣列,透過math::key2value產生的對照表.
        $conf["reference"]=$f255t100;
        #可省略參數:
        #無
        $value2key=math::value2key($conf);
        unset($conf);

        #如果執行失敗
        if($value2key["status"]==="false"){

                #印出結果
                var_dump($value2key);

                #結束執行
                exit;

                }#if end
        
        #fix 轉換誤差
        $f100t255[$i]=$value2key["content"];

        }#for end
        
#fix 轉換誤差       
#$f100t255[70]=178;

#var_dump($f100t255);
#var_dump($f255t100);
#exit;

#設定 70%,對應0~256的哪邊
#函式說明: 
#數值對應的key
#回傳的結果:
#$result["status"],執行正常與否,"true"為正常,"false"為不正常.
#$result["function"],當前執行的函數名稱.
#$result["error"],錯誤訊息陣列.
#$result["argu"],使用的參數.
#必填參數:
#$conf["value"],浮點數,要尋找對應的數值.
$conf["value"]=(double)(70);
#$conf["reference"],整數陣列,透過math::key2value產生的對照表.
$conf["reference"]=$f255t100;
#可省略參數:
#無
$value2key=math::value2key($conf);
unset($conf);

#如果執行失敗
if($value2key["status"]==="false"){

        #印出結果
        var_dump($value2key);

        #結束執行
        exit;

        }#if end

#儲存結果
$num255=$value2key["content"];

#提示轉換的結果
echo "70%=>".$num255."<br>";

#設定 $value2key["content"],對應0~100的哪邊
#函式說明: 
#數值對應的key
#回傳的結果:
#$result["status"],執行正常與否,"true"為正常,"false"為不正常.
#$result["function"],當前執行的函數名稱.
#$result["error"],錯誤訊息陣列.
#$result["argu"],使用的參數.
#必填參數:
#$conf["value"],浮點數,要尋找對應的數值.
$conf["value"]=(double)($num255);
#$conf["reference"],整數陣列,透過math::key2value產生的對照表.
$conf["reference"]=$f100t255;
#可省略參數:
#無
$value2key=math::value2key($conf);
unset($conf);

#如果執行失敗
if($value2key["status"]==="false"){

        #印出結果
        var_dump($value2key);

        #結束執行
        exit;

        }#if end

#儲存結果
$num100=$value2key["content"];

#提示轉換的結果
echo "$num255=>".$num100."%<br>";

*/

/*

#說明正在測試的內容
echo"<hr>math::fixedKeyToValueReversed - testCase 1<br>";

#函式說明:
#建立一對一的數值對照表,左右都對應到整數值.
#回傳的結果:
#$result["status"],執行正常與否,"true"為正常,"false"為不正常.
#$result["function"],當前執行的函數名稱.
#$result["error"],錯誤訊息陣列.
#$result["argu"],使用的參數.
#$result["content"],由左至右的數值對應表
#必填參數
#$conf["rangeF"],整數陣列,要產生對應表的左手方範圍,$conf["rangeF"]["s"]為左手邊的起始範圍,$conf["rangeF"]["e"]為左手邊的結束範圍.
$conf["rangeF"]=array("s"=>0,"e"=>100);
#$conf["rangeT"],整數陣列,要產生對應表的右手方範圍,$conf["rangeT"]["s"]為右手邊的起始範圍,$conf["rangeT"]["e"]為右手邊的結束範圍.
$conf["rangeT"]=array('s'=>0,"e"=>255);
#可省略參數:
#無.
$fixedKeyToValueReversed=math::fixedKeyToValueReversed($conf);
unset($conf);

#如果建立失敗
if($fixedKeyToValueReversed["status"]==="false"){

        #印出結果
        var_dump($fixedKeyToValueReversed);
        
        #結束執行
        exit;
        
        }#if end

#印出對照表
var_dump($fixedKeyToValueReversed["content"]);
        
*/

/*

#說明正在測試的內容
echo"<hr>math::fixedKeyToValueReversed - testCase 2<br>";

#函式說明:
#建立一對一的數值對照表,左右都對應到整數值.
#回傳的結果:
#$result["status"],執行正常與否,"true"為正常,"false"為不正常.
#$result["function"],當前執行的函數名稱.
#$result["error"],錯誤訊息陣列.
#$result["argu"],使用的參數.
#$result["content"],由左至右的數值對應表
#必填參數
#$conf["rangeF"],整數陣列,要產生對應表的左手方範圍,$conf["rangeF"]["s"]為左手邊的起始範圍,$conf["rangeF"]["e"]為左手邊的結束範圍.
$conf["rangeF"]=array("s"=>129,"e"=>191);
#$conf["rangeT"],整數陣列,要產生對應表的右手方範圍,$conf["rangeT"]["s"]為右手邊的起始範圍,$conf["rangeT"]["e"]為右手邊的結束範圍.
$conf["rangeT"]=array('s'=>1,"e"=>63);
#可省略參數:
#無.
$fixedKeyToValueReversed=math::fixedKeyToValueReversed($conf);
unset($conf);

#如果建立失敗
if($fixedKeyToValueReversed["status"]==="false"){

        #印出結果
        var_dump($fixedKeyToValueReversed);
        
        #結束執行
        exit;
        
        }#if end

#印出對照表
var_dump($fixedKeyToValueReversed["content"]);
        
*/

/*

#說明正在測試的內容
echo"<hr>math::getExp - testCase 1<br>";

#函式說明:get Euler's number
#回傳結果:
#$result["status"],執行正常("true")與否("false").
#$result["content"],回傳數學常數(e).
#$reuslt["argu"],使用的參數.
#必填參數:
#無
#可省略參數:
#$conf["pow"],整數字串,次方,預設為1,代表e的1次方.
#$conf["pow"]="1";
#參考資料:
#https://www.runoob.com/php/func-math-exp.html
#https://en.wikipedia.org/wiki/E_(mathematical_constant)
$conf=array();
$getExp=math::getExp($conf);
unset($conf);

#印出結果
var_dump($getExp);

*/

/*

#說明正在測試的內容
echo"<hr>math::raw2gps - testCase 1<br>";

#函式說明:
#將16進位的16位數,轉換為小數點後到7位的gp表示方法.
#回傳結果:
#$result["status"],執行正常("true")與否("false").
#$result["content"],回傳數學常數(e).
#$reuslt["argu"],使用的參數.
#必填參數:
#$conf["rawGps"],字串,16進位的16位數,亦即gps的格式.
$conf["rawGps"]="0EC9292348234E74";
#可省略參數:
#無.   
$raw2gps=math::raw2gps($conf);
unset($conf);

#印出結果
var_dump($raw2gps);

*/

/*

#說明正在測試的內容
echo"<hr>math::raw2gps - testCase 2<br>";

#函式說明:
#將16進位的16位數,轉換為小數點後到7位的gp表示方法.
#回傳結果:
#$result["status"],執行正常("true")與否("false").
#$result["content"],回傳數學常數(e).
#$reuslt["argu"],使用的參數.
#必填參數:
#$conf["rawGps"],字串,16進位的16位數,亦即gps的格式.
$conf["rawGps"]="5EC92923C8234E74";
#可省略參數:
#無.   
$raw2gps=math::raw2gps($conf);
unset($conf);

#印出結果
var_dump($raw2gps);

*/

/*

#說明正在測試的內容
echo"<hr>math::raw2gps - testCase 3<br>";

#函式說明:
#將16進位的16位數,轉換為小數點後到7位的gp表示方法.
#回傳結果:
#$result["status"],執行正常("true")與否("false").
#$result["content"],回傳數學常數(e).
#$reuslt["argu"],使用的參數.
#必填參數:
#$conf["rawGps"],字串,16進位的16位數,亦即gps的格式.
$conf["rawGps"]="24.8064291,121.0273396";
#可省略參數:
#$conf["reverse"],預設為"false","true"代表要將經緯度(121.1234567,23.1234567)轉換為16進位的16位數字.
$conf["reverse"]="true";
#可省略參數:
#無.   
$raw2gps=math::raw2gps($conf);
unset($conf);

#印出結果
var_dump($raw2gps);

*/

/*

#說明正在測試的內容
echo"<hr>math::raw2gps - testCase 4<br>";

#函式說明:
#將16進位的16位數,轉換為小數點後到7位的gp表示方法.
#回傳結果:
#$result["status"],執行正常("true")與否("false").
#$result["content"],回傳數學常數(e).
#$reuslt["argu"],使用的參數.
#必填參數:
#$conf["rawGps"],字串,16進位的16位數,亦即gps的格式.
$conf["rawGps"]="-69.0241571,-155.7757044";
#可省略參數:
#$conf["reverse"],預設為"false","true"代表要將經緯度(121.1234567,23.1234567)轉換為16進位的16位數字.
$conf["reverse"]="true";
#可省略參數:
#無.   
$raw2gps=math::raw2gps($conf);
unset($conf);

#印出結果
var_dump($raw2gps);

*/

/*

#說明正在測試的內容
echo"<hr>math::raw2gps - testCase 5<br>";

#函式說明:
#將16進位的16位數,轉換為小數點後到7位的gp表示方法.
#回傳結果:
#$result["status"],執行正常("true")與否("false").
#$result["content"],回傳數學常數(e).
#$reuslt["argu"],使用的參數.
#必填參數:
#$conf["rawGps"],字串,16進位的16位數,亦即gps的格式.
$conf["rawGps"]="52488046B9B2F8E8";
#可省略參數:
#$conf["reverse"],預設為"false","true"代表要將經緯度(121.1234567,23.1234567)轉換為16進位的16位數字.
#$conf["reverse"]="true";
#可省略參數:
#無.   
$raw2gps=math::raw2gps($conf);
unset($conf);

#印出結果
var_dump($raw2gps);

*/

/*

#說明正在測試的內容
echo"<hr>math::raw2gps - testCase 6<br>";

google map 地圖 url
https://www.google.com.tw/maps/@41.2435841,123.1843184,17z?hl=zh-TW

#函式說明:
#將16進位的16位數,轉換為小數點後到7位的gp表示方法.
#回傳結果:
#$result["status"],執行正常("true")與否("false").
#$result["content"],回傳數學常數(e).
#$reuslt["argu"],使用的參數.
#必填參數:
#$conf["rawGps"],字串,16進位的16位數,亦即gps的格式.
$conf["rawGps"]="41.243584114494,123.18431835648";
$conf["rawGps"]="41.2435841,123.1843183";
#可省略參數:
#$conf["reverse"],預設為"false","true"代表要將經緯度(121.1234567,23.1234567)轉換為16進位的16位數字.
$conf["reverse"]="true";
#可省略參數:
#無.   
$raw2gps=math::raw2gps($conf);
unset($conf);

#印出結果
var_dump($raw2gps);

*/

?>