Subversion Repositories php-qbpwcf

Rev

Rev 226 | Blame | Compare with Previous | Last modification | View Log | RSS feed

<?php

/*

        QBPWCF, Quick Build PHP website Component base on Fedora Linux.
    Copyright (C) 2014~2026 MIN ZHI, CHEN

    This file is part of QBPWCF.

    QBPWCF is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    QBPWCF is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with QBPWCF.  If not, see <http://www.gnu.org/licenses/>.

*/
namespace qbpwcf;

/*
類別說明:
跟數學計算有關的類別.
備註:
無.
*/
class math{

        /*
        #函式說明:
        #當前類別被呼叫的靜態方法不存在時,將會執行該函數,回報該方法不存在.
        #回傳結果:
        #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
        #$reuslt["error"],執行不正常結束的錯訊息陣列.
        #$result["function"],當前執行的函式名稱.
        #必填參數:
        #$method,物件,為物件實體或類別名稱,會自動置入該參數.
        #$arguments,陣列,為呼叫方法時所用的參數.
        #可省略參數:
        #無.
        #參考資料:
        #__call=>http://php.net/manual/en/language.oop5.overloading.php#object.callstatic
        #備註:
        #無.
        */
        public function __call($method,$arguments){

                #取得當前執行的函式
                $result["function"]=__FUNCTION__;

                #設置執行不正常
                $result["status"]="false";

                #設置執行錯誤
                $result["error"][]=__NAMESPACE__ ."/".$method."() 不存在!";

                #設置所丟入的參數
                $result["error"][]=$arguments;

                #回傳結果
                return $result;

                }#function __call end

        /*
        #函式說明:
        #當前類別被呼叫的靜態方法不存在時,將會執行該函數,回報該方法不存在.
        #回傳結果:
        #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
        #$reuslt["error"],執行不正常結束的錯訊息陣列.
        #$result["function"],當前執行的函式名稱.
        #必填參數:
        #$method,物件,為物件實體或類別名稱,會自動置入該參數.
        #$arguments,陣列,為呼叫方法時所用的參數.
        #可省略參數:
        #無.
        #參考資料:
        #__callStatic=>http://php.net/manual/en/language.oop5.overloading.php#object.callstatic
        #備註:
        #無.
        */
        public static function __callStatic($method,$arguments){

                #取得當前執行的函式
                $result["function"]=__FUNCTION__;

                #設置執行不正常
                $result["status"]="false";

                #設置執行錯誤
                $result["error"][]="欲呼叫的". __NAMESPACE__ ."/".$method."() 不存在!";

                #設置所丟入的參數
                $result["error"][]=$arguments;

                #回傳結果
                return $result;

                }#function __callStatic end

        /*
        #函式說明:
        #計算總和.
        #回傳結果:
        #$result["status"],執行是否正常,"true"為正常,"false"為不正常.
        #$result["error"],錯誤訊息陣列.
        #$result["function"],當前執行的函數名稱.
        #$result["content"],總和.
        #必填參數:
        $conf["rawDataArray"]=array("");#爲原始資料的一維陣列
        #可省略參數:
        #無.
        #參考資料:
        #array-sum=>http://php.net/manual/en/function.array-sum.ph
        #備註:
        #無.
        */
        public static function computeSum(&$conf){

                #初始化要回傳的內容
                $result=array();

                #記錄當前執行的函數名稱
                $result["function"]=__FUNCTION__;

                #如果 $conf 不為陣列
                if(gettype($conf)!="array"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"][]="\$conf變數須為陣列形態";

                        #如果傳入的參數為 null
                        if($conf==null){

                                #設置執行錯誤訊息
                                $result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";

                                }#if end

                        #回傳結果
                        return $result;

                        }#if end

                #檢查參數
                #函式說明:
                #檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
                #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
                #$reuslt["error"],執行不正常結束的錯訊息陣列.
                #$result["function"],當前執行的函式名稱.
                #$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
                #$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
                #$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
                #$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
                #$result["argu"],字串陣列,目前輸入的參數名稱陣列.
                #$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
                #$result["notNeedVar"],字串陣列,多餘的參數名稱.
                #必填寫的參數:
                #$conf["variableCheck::checkArguments"]["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
                $conf["variableCheck::checkArguments"]["varInput"]=&$conf;
                #$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
                $conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("rawDataArray");
                #$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object");
                $conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("array");
                #$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
                $conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
                #可以省略的參數:
                #$conf["variableCheck::checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。
                $conf["variableCheck::checkArguments"]["variableCheck::checkArguments"]["canBeEmptyString"]="false";
                #$conf["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
                #$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("asc");
                #$conf["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
                #$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string");
                #$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
                #$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array("false");
                #$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
                #$conf["arrayCountEqualCheck"][]=array();
                #參考資料來源:
                #array_keys=>http://php.net/manual/en/function.array-keys.php
                $checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
                unset($conf["variableCheck::checkArguments"]);

                #如果檢查參數失敗
                if($checkArguments["status"]=="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"]=$checkArguments;

                        #回傳結果
                        return $result;

                        }#if end

                #如果檢查不通過
                if($checkArguments["passed"]=="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"]=$checkArguments;

                        #回傳結果
                        return $result;

                        }#if end

                #加總陣列中的數字
                $sum=array_sum($conf["rawDataArray"]);

                #如果加總失敗
                if($sum==false){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"][]="加總失敗";

                        #回傳結果
                        return $result;

                        }#if end

                #反之加總成功
                else{

                        #取得總和
                        $result["content"]=$sum;

                        }#else end

                #設置執行正常
                $result["status"]="true";

                #回傳總和
                return $result;

                }#function computeSum end

        /*
        #函式說明:
        #計算平均數.
        #回傳結果:
        #$result["status"],執行是否正常,"true"為正常,"false"為不正常.
        #$result["error"],錯誤訊息陣列.
        #$result["function"],當前執行的函數名稱.
        #$result["content"],平均數.
        #必填參數:
        $conf["rawDataArray"]=array("");#爲原始資料的一維陣列
        #可省略參數:
        #無.
        #參考資料:
        #無.
        #備註:
        #無.
        */
        public static function computeMean(&$conf){

                #初始化要回傳的內容
                $result=array();

                #記錄當前執行的函數名稱
                $result["function"]=__FUNCTION__;

                #如果 $conf 不為陣列
                if(gettype($conf)!="array"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"][]="\$conf變數須為陣列形態";

                        #如果傳入的參數為 null
                        if($conf==null){

                                #設置執行錯誤訊息
                                $result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";

                                }#if end

                        #回傳結果
                        return $result;

                        }#if end

                #檢查參數
                #函式說明:
                #檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
                #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
                #$reuslt["error"],執行不正常結束的錯訊息陣列.
                #$result["function"],當前執行的函式名稱.
                #$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
                #$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
                #$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
                #$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
                #$result["argu"],字串陣列,目前輸入的參數名稱陣列.
                #$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
                #$result["notNeedVar"],字串陣列,多餘的參數名稱.
                #必填寫的參數:
                #$conf["variableCheck::checkArguments"]["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
                $conf["variableCheck::checkArguments"]["varInput"]=&$conf;
                #$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
                $conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("rawDataArray");
                #$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object");
                $conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("array");
                #$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
                $conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
                #可以省略的參數:
                #$conf["variableCheck::checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。
                $conf["variableCheck::checkArguments"]["variableCheck::checkArguments"]["canBeEmptyString"]="false";
                #$conf["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
                #$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("asc");
                #$conf["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
                #$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string");
                #$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
                #$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array("false");
                #$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
                #$conf["arrayCountEqualCheck"][]=array();
                #參考資料來源:
                #array_keys=>http://php.net/manual/en/function.array-keys.php
                $checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
                unset($conf["variableCheck::checkArguments"]);

                #如果檢查參數失敗
                if($checkArguments["status"]=="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"]=$checkArguments;

                        #回傳結果
                        return $result;

                        }#if end

                #如果檢查不通過
                if($checkArguments["passed"]=="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"]=$checkArguments;

                        #回傳結果
                        return $result;

                        }#if end

                #取得原始資料的筆數
                $rawDataCount=count($conf["rawDataArray"]);

                #計算總合
                #函式說明:
                #計算總和.
                #回傳結果:
                #$result["status"],執行是否正常,"true"為正常,"false"為不正常.
                #$result["error"],錯誤訊息陣列.
                #$result["function"],當前執行的函數名稱.
                #$result["content"],總和.
                #必填參數:
                $conf["math::computeSum"]["rawDataArray"]=$conf["rawDataArray"];#爲原始資料的一維陣列
                #參考資料:
                #array-sum=>http://php.net/manual/en/function.array-sum.php
                $computeSum=math::computeSum($conf["math::computeSum"]);
                unset($conf["math::computeSum"]);

                #如果加總失敗
                if($computeSum["status"]=="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"]=$computeSum;

                        #回傳結果
                        return $result;

                        }#if end

                #取得平均數
                $result["content"]=$computeSum["content"]/$rawDataCount;

                #設置執行正常
                $result["status"]="true";

                #回傳結果
                return $result;

                }#function computeMean end

        /*
        #函式說明:
        #計算標準差,結果會回傳標準差.
        #回傳結果:
        #$result["status"],執行是否正常,"true"為正常,"false"為不正常.
        #$result["error"],錯誤訊息陣列.
        #$result["function"],當前執行的函數名稱.
        #$result["content"],標準差.
        #必填參數:
        $conf["rawDataArray"]=array("");#爲原始資料的一維陣列.
        #可省略參數:
        #無.
        #參考資料:
        #無.
        #備註:
        #無.
        */
        public static function computeStandardDeviation(&$conf){

                #初始化要回傳的內容
                $result=array();

                #記錄當前執行的函數名稱
                $result["function"]=__FUNCTION__;

                #如果 $conf 不為陣列
                if(gettype($conf)!="array"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"][]="\$conf變數須為陣列形態";

                        #如果傳入的參數為 null
                        if($conf==null){

                                #設置執行錯誤訊息
                                $result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";

                                }#if end

                        #回傳結果
                        return $result;

                        }#if end

                #檢查參數
                #函式說明:
                #檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
                #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
                #$reuslt["error"],執行不正常結束的錯訊息陣列.
                #$result["function"],當前執行的函式名稱.
                #$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
                #$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
                #$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
                #$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
                #$result["argu"],字串陣列,目前輸入的參數名稱陣列.
                #$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
                #$result["notNeedVar"],字串陣列,多餘的參數名稱.
                #必填寫的參數:
                #$conf["variableCheck::checkArguments"]["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
                $conf["variableCheck::checkArguments"]["varInput"]=&$conf;
                #$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
                $conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("rawDataArray");
                #$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object");
                $conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("array");
                #$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
                $conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
                #可以省略的參數:
                #$conf["variableCheck::checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。
                $conf["variableCheck::checkArguments"]["variableCheck::checkArguments"]["canBeEmptyString"]="false";
                #$conf["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
                #$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("asc");
                #$conf["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
                #$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string");
                #$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
                #$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array("false");
                #$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
                #$conf["arrayCountEqualCheck"][]=array();
                #參考資料來源:
                #array_keys=>http://php.net/manual/en/function.array-keys.php
                $checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
                unset($conf["variableCheck::checkArguments"]);

                #如果檢查參數失敗
                if($checkArguments["status"]=="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"]=$checkArguments;

                        #回傳結果
                        return $result;

                        }#if end

                #如果檢查不通過
                if($checkArguments["passed"]=="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"]=$checkArguments;

                        #回傳結果
                        return $result;

                        }#if end

                #取得原始資料的筆數
                $rawDataCounts=count($conf["rawDataArray"]);

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

                #如果取得平均數失敗
                if($mean["status"]=="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"]=$mean;

                        #回傳結果
                        return $result;

                        }#if end

                #取得平均數
                $mean=$mean["content"];

                #給與總和的預設值
                $sum=0;

                #計算每筆資料減掉平均值的平方和
                #pow(a,b)爲計算a的b次方
                for($i=0;$i<$rawDataCounts;$i++){

                        $sum=$sum+pow(($conf["rawDataArray"][$i]-$mean),2);

                        }#for end

                #取得每筆資料減掉平均值的平方然後除以資料筆數
                #即爲標準差的平方和
                $standardDeviationSqure=$sum/$rawDataCounts;

                #取得標準差
                #sqrt()爲開根號
                $result["content"]=sqrt($standardDeviationSqure);

                #設置執行正常
                $result["status"]="true";

                #回傳結果
                return $result;

                }#function computeStandardDeviation end

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

                #初始化要回傳的內容
                $result=array();

                #記錄當前執行的函數名稱
                $result["function"]=__FUNCTION__;

                #如果 $conf 不為陣列
                if(gettype($conf)!="array"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"][]="\$conf變數須為陣列形態";

                        #如果傳入的參數為 null
                        if($conf==null){

                                #設置執行錯誤訊息
                                $result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";

                                }#if end

                        #回傳結果
                        return $result;

                        }#if end

                #檢查參數
                #函式說明:
                #檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
                #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
                #$reuslt["error"],執行不正常結束的錯訊息陣列.
                #$result["function"],當前執行的函式名稱.
                #$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
                #$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
                #$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
                #$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
                #$result["argu"],字串陣列,目前輸入的參數名稱陣列.
                #$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
                #$result["notNeedVar"],字串陣列,多餘的參數名稱.
                #必填寫的參數:
                #$conf["variableCheck::checkArguments"]["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
                $conf["variableCheck::checkArguments"]["varInput"]=&$conf;
                #$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
                $conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("rawDataArray");
                #$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object");
                $conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("array");
                #$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
                $conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
                #可以省略的參數:
                #$conf["variableCheck::checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。
                $conf["variableCheck::checkArguments"]["variableCheck::checkArguments"]["canBeEmptyString"]="false";
                #$conf["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
                $conf["variableCheck::checkArguments"]["skipableVariableName"]=array("asc");
                #$conf["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
                $conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string");
                #$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
                $conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array("false");
                #$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
                #$conf["arrayCountEqualCheck"][]=array();
                #參考資料來源:
                #array_keys=>http://php.net/manual/en/function.array-keys.php
                $checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
                unset($conf["variableCheck::checkArguments"]);

                #如果檢查參數失敗
                if($checkArguments["status"]=="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"]=$checkArguments;

                        #回傳結果
                        return $result;

                        }#if end

                #如果檢查不通過
                if($checkArguments["passed"]=="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"]=$checkArguments;

                        #回傳結果
                        return $result;

                        }#if end

                #用來儲存排列後順序的陣列
                $result["content"]=array();

                #用來計算的暫存陣列
                $inputTempArray=$conf["rawDataArray"];

                #初始化計數
                $count=0;

                #當 $inputTempArray 有元素就執行
                while(count($inputTempArray)>0){

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

                        #如果尋找最大值失敗
                        if($getMaxValue["status"]=="false"){

                                #設置執行失敗
                                $result["status"]="false";

                                #設置執行錯誤訊息
                                $result["error"]=$getMaxValue;

                                #回傳結果
                                return $result;

                                }#if end

                        #函式說明:
                        #將陣列中特定元素剔除,並重新按照順序排序
                        #回傳結果:
                        #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
                        #$result["error"],錯誤訊息
                        #$result["function"],當前執行的函數
                        #$result["content"]["byName"],剔除掉特定元素的陣列,使用原來陣列的key來儲存.
                        #$result["content"]["byNumber"],剔除掉特定元素的陣列,使用從0開始的整數key來儲存.
                        #必填參數:
                        $conf["arrays::eraseElement"]["rawInputArray"]=$inputTempArray;#要處理的原始數字陣列
                        $conf["arrays::eraseElement"]["eraseElementKey"]=(string)$getMaxValue["key"];#要移除的元素key值
                        $eraseElement=arrays::eraseElement($conf["arrays::eraseElement"]);
                        unset($conf["arrays::eraseElement"]);

                        #如果移除最大值元素失敗
                        if($eraseElement["status"]=="false"){

                                #設置執行失敗
                                $result["status"]="false";

                                #設置執行錯誤訊息
                                $result["error"]=$eraseElement;

                                #回傳結果
                                return $result;

                                }#if end

                        #如果移除元素過後不為空陣列
                        if($eraseElement["empty"]=="false"){

                                #置換成移除掉最大數元素後的陣列
                                $inputTempArray=$eraseElement["content"]["byName"];

                                }#if end

                        #反之
                        else{

                                #設成空陣列
                                $inputTempArray=array();

                                }#else end

                        #依據順位儲存最大的數字元素
                        $result["value"][$count]=$getMaxValue["value"];
                        $result["key"][$count]=$getMaxValue["key"];
                        $result["content"][$count]=$getMaxValue["value"];

                        #計數加一
                        $count++;

                        }#while end

                #如果$conf["asc"]爲"true"
                if($conf["asc"]=="true"){

                        #函式說明:
                        #將陣列倒置
                        #回傳結果:
                        #$result["status"],執行是否成功,"true"為執行成功;"false"為執行失敗.
                        #$result["error"],錯誤訊息陣列.
                        #$result["function"],當前執行的函數名稱.
                        #$result["convertArray"],轉置後的陣列內容.
                        #必填參數:
                        $conf["arrays::convertArray"]["inputArray"]=$result["value"];#要倒置的陣列.
                        #參考資料來源:
                        #http://tw2.php.net/array_reverse => 陣列倒置的內建涵式.
                        $convertArray=arrays::convertArray($conf["arrays::convertArray"]);
                        unset($conf["arrays::convertArray"]);

                        #如果轉置陣列失敗
                        if($convertArray["status"]=="false"){

                                #設置執行失敗
                                $result["status"]="false";

                                #設置執行錯誤訊息
                                $result["error"]=$convertArray;

                                #回傳結果
                                return $result;

                                }#if end

                        #取得轉置後的 $result["value"] 陣列
                        $result["value"]=$convertArray["convertArray"];

                        #函式說明:
                        #將陣列倒置
                        #回傳結果:
                        #$result["status"],執行是否成功,"true"為執行成功;"false"為執行失敗.
                        #$result["error"],錯誤訊息陣列.
                        #$result["function"],當前執行的函數名稱.
                        #$result["convertArray"],轉置後的陣列內容.
                        #必填參數:
                        $conf["arrays::convertArray"]["inputArray"]=$result["key"];#要倒置的陣列.
                        #參考資料來源:
                        #http://tw2.php.net/array_reverse => 陣列倒置的內建涵式.
                        $convertArray=arrays::convertArray($conf["arrays::convertArray"]);
                        unset($conf["arrays::convertArray"]);

                        #如果轉置陣列失敗
                        if($convertArray["status"]=="false"){

                                #設置執行失敗
                                $result["status"]="false";

                                #設置執行錯誤訊息
                                $result["error"]=$convertArray;

                                #回傳結果
                                return $result;

                                }#if end

                        #取得轉置後的 $result["key"] 陣列
                        $result["key"]=$convertArray["convertArray"];

                        #函式說明:
                        #將陣列倒置
                        #回傳結果:
                        #$result["status"],執行是否成功,"true"為執行成功;"false"為執行失敗.
                        #$result["error"],錯誤訊息陣列.
                        #$result["function"],當前執行的函數名稱.
                        #$result["convertArray"],轉置後的陣列內容.
                        #必填參數:
                        $conf["arrays::convertArray"]["inputArray"]=$result["content"];#要倒置的陣列.
                        #參考資料來源:
                        #http://tw2.php.net/array_reverse => 陣列倒置的內建涵式.
                        $convertArray=arrays::convertArray($conf["arrays::convertArray"]);
                        unset($conf["arrays::convertArray"]);

                        #如果轉置陣列失敗
                        if($convertArray["status"]=="false"){

                                #設置執行失敗
                                $result["status"]="false";

                                #設置執行錯誤訊息
                                $result["error"]=$convertArray;

                                #回傳結果
                                return $result;

                                }#if end

                        #取得轉置後的 $result["content"] 陣列
                        $result["content"]=$convertArray["convertArray"];

                        }#if end

                #設置執行正常
                $result["status"]="true";

                #回傳結果
                return $result;

                }#function arrangeNum end

        /*
        #函式說明:
        #將數值透過 z-score normalization(zero-mean normalization) 進行正規化,結果會回傳一個陣列 。
        #回傳結果:
        #$result["status"],執行正常與否,"true"為正常,"false"為不正常.
        #$result["function"],當前執行的函數名稱.
        #$result["error"],錯誤訊息陣列.
        #$result["newValue"][$i]爲第$i+1個數字經過正規化後的結果.
        #$result["oldValue"][$i]爲第$i+1個數字的原始內容.
        #必填參數:
        $conf["rawDataArray"]=array("");#爲原始資料的一維陣列。
        #可省略參數:
        #無.
        #參考資料:
        #無.
        #備註:
        #無.
        */
        public static function zScoreNormalization($conf){

                #初始化要回傳的內容
                $result=array();

                #記錄當前執行的函數名稱
                $result["function"]=__FUNCTION__;

                #如果 $conf 不為陣列
                if(gettype($conf)!="array"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"][]="\$conf變數須為陣列形態";

                        #如果傳入的參數為 null
                        if($conf==null){

                                #設置執行錯誤訊息
                                $result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";

                                }#if end

                        #回傳結果
                        return $result;

                        }#if end

                #檢查參數
                #函式說明:
                #檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
                #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
                #$reuslt["error"],執行不正常結束的錯訊息陣列.
                #$result["function"],當前執行的函式名稱.
                #$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
                #$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
                #$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
                #$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
                #$result["argu"],字串陣列,目前輸入的參數名稱陣列.
                #$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
                #$result["notNeedVar"],字串陣列,多餘的參數名稱.
                #必填寫的參數:
                #$conf["variableCheck::checkArguments"]["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
                $conf["variableCheck::checkArguments"]["varInput"]=&$conf;
                #$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
                $conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("rawDataArray");
                #$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object");
                $conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("array");
                #$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
                $conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
                #可以省略的參數:
                #$conf["variableCheck::checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。
                $conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";
                #$conf["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
                #$conf["skipableVariableName"]=array();
                #$conf["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
                #$conf["skipableVariableType"]=array();
                #$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
                #$conf["skipableVarDefaultValue"]=array("");
                #$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
                #$conf["arrayCountEqualCheck"][]=array();
                #參考資料來源:
                #array_keys=>http://php.net/manual/en/function.array-keys.php
                $checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
                unset($conf["variableCheck::checkArguments"]);

                #如果檢查參數失敗
                if($checkArguments["status"]=="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"]=$checkArguments;

                        #回傳結果
                        return $result;

                        }#if end

                #如果檢查不通過
                if($checkArguments["passed"]=="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"]=$checkArguments;

                        #回傳結果
                        return $result;

                        }#if end

                #取得平均數
                #$result["status"],執行是否正常,"true"為正常,"false"為不正常.
                #$result["error"],錯誤訊息陣列.
                #$result["function"],當前執行的函數名稱.
                #$result["content"],平均數.
                $conf["math"]["computeMean"]["rawDataArray"]=$conf["rawDataArray"];
                $mean=math::computeMean($conf["math"]["computeMean"]);
                unset($conf["math"]["computeMean"]);

                #如果取得平均數失敗
                if($mean["status"]=="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"]=$mean;

                        #回傳結果
                        return $result;

                        }#if end

                #取得平均數
                $mean=$mean["content"];

                #取得標準差
                #回傳結果:
                #$result["status"],執行是否正常,"true"為正常,"false"為不正常.
                #$result["error"],錯誤訊息陣列.
                #$result["function"],當前執行的函數名稱.
                #$result["content"],標準差.
                $conf["math"]["computeStandardDeviation"]["rawDataArray"]=$conf["rawDataArray"];
                $standardDeviaction=math::computeStandardDeviation($conf["math"]["computeStandardDeviation"]);
                unset($conf["math"]["computeStandardDeviation"]);

                #如果 取得標準差 失敗
                if($standardDeviaction["status"]=="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"]=$standardDeviaction;

                        #回傳結果
                        return $result;

                        }#if end

                #取得標準差
                $standardDeviaction=$standardDeviaction["content"];

                #取得資料筆數
                $rawDataCount=count($conf["rawDataArray"]);

                #有幾筆原始資料就執行幾次
                for($i=0;$i<$rawDataCount;$i++){

                        #計算每筆資料經過標準化後的數值,(原始數據減掉平均值)/標準差
                        $meanAbsoluteDeviation[$i]=($conf["rawDataArray"][$i]-$mean)/$standardDeviaction;

                        }#迴圈結束

                #將每筆資料經過標準化後的數值放進 $result["newValue"] 陣列變數裏面
                $result["newValue"]=$meanAbsoluteDeviation;

                #將原始資料放進陣列變數 $result["oldValue"] 裏面
                $result["oldValue"]=$conf["rawDataArray"];

                #設置執行正常
                $result["status"]="true";

                #回傳結果
                return $result;

                }#函式結束

        /*
        #函式說明:
        #求算相關係數(皮爾森係數),結果會回傳1數值。代表兩筆數據的相關層度,正值代表正相關;負值代表負相關。
        #回傳結果:
        #$result["status"],執行是否成功的識別,"true"代表執行正常,"false"代表執行不正常.
        #$result["error"],錯誤訊息陣列.
        #$result["function"],當前執行的函數名稱.
        #$result["content"],相關係數(皮爾森係數).
        #必填參數:
        $conf["rawDataArrayA"]=array("");#爲第1組數據,元素數量須與$rawDataArray["B"]一樣.
        $conf["rawDataArrayB"]=array("");#爲第2組數據,元素數量須與$rawDataArray["A"]一樣.
        #可省略參數:
        #無.
        #參考資料:
        #無.
        #備註:
        #無.
        */
        public static function computeCorrelationCoefficientForNumbericData(&$conf){

                #取得將參數丟給R執行後的回傳結果
                return R::computeCorrelationCoefficientForNumbericData($conf);

                }#function computeCorrelationCoefficientForNumbericData end

        /*
        #函式說明:
        #計算兩組數字數據的共變異數,結果會回傳一個數值
        #$result["status"],執行是否正常,"true"為正常,"false"為不正常.
        #$result["error"],錯誤訊息陣列.
        #$result["function"],當前執行的函數名稱.
        #$result["content"],兩組數字數據的共變異數.
        #必填參數:
        $conf["rawDataArrayA"]="";#爲第1組數據
        $conf["rawDataArrayB"]="";#爲第2組數據
        #可省略參數:
        #無.
        #參考資料:
        #無.
        #備註:
        #無.
        */
        public static function computeCovarianceOfNumericData(&$conf){

                #初始化要回傳的內容
                $result=array();

                #記錄當前執行的函數名稱
                $result["function"]=__FUNCTION__;

                #如果 $conf 不為陣列
                if(gettype($conf)!="array"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"][]="\$conf變數須為陣列形態";

                        #如果傳入的參數為 null
                        if($conf==null){

                                #設置執行錯誤訊息
                                $result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";

                                }#if end

                        #回傳結果
                        return $result;

                        }#if end

                #檢查參數
                #函式說明:
                #檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
                #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
                #$reuslt["error"],執行不正常結束的錯訊息陣列.
                #$result["function"],當前執行的函式名稱.
                #$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
                #$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
                #$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
                #$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
                #$result["argu"],字串陣列,目前輸入的參數名稱陣列.
                #$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
                #$result["notNeedVar"],字串陣列,多餘的參數名稱.
                #必填寫的參數:
                #$conf["variableCheck::checkArguments"]["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
                $conf["variableCheck::checkArguments"]["varInput"]=&$conf;
                #$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
                $conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("rawDataArrayA","rawDataArrayB");
                #$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object");
                $conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("array","array");
                #$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
                $conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
                #可以省略的參數:
                #$conf["variableCheck::checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。
                #$conf["variableCheck::checkArguments"]["variableCheck::checkArguments"]["canBeEmptyString"]="false";
                #$conf["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
                #$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("asc");
                #$conf["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
                #$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string");
                #$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
                #$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array("false");
                #$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
                #$conf["arrayCountEqualCheck"][]=array();
                #參考資料來源:
                #array_keys=>http://php.net/manual/en/function.array-keys.php
                $checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
                unset($conf["variableCheck::checkArguments"]);

                #如果檢查參數失敗
                if($checkArguments["status"]=="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"]=$checkArguments;

                        #回傳結果
                        return $result;

                        }#if end

                #如果檢查不通過
                if($checkArguments["passed"]=="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"]=$checkArguments;

                        #回傳結果
                        return $result;

                        }#if end

                #A的期望值等於A的平均數
                #函式說明:
                #計算平均數
                #$result["status"],執行是否正常,"true"為正常,"false"為不正常.
                #$result["error"],錯誤訊息陣列.
                #$result["function"],當前執行的函數名稱.
                #$result["content"],平均數.
                #必填參數:
                $conf["math::computeMean"]["rawDataArray"]=$conf["rawDataArrayA"];#爲原始資料的一維陣列
                $meanA=math::computeMean($conf["math::computeMean"]);
                unset($conf["math::computeMean"]);

                #如果取得平均數A失敗
                if($meanA["status"]=="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"]=$meanA;

                        #回傳結果
                        return $result;

                        }#if end

                #取得平均數A
                $meanA=$meanA["content"];

                #A的期望值等於A的平均數
                #函式說明:
                #計算平均數
                #$result["status"],執行是否正常,"true"為正常,"false"為不正常.
                #$result["error"],錯誤訊息陣列.
                #$result["function"],當前執行的函數名稱.
                #$result["content"],平均數.
                #必填參數:
                $conf["math::computeMean"]["rawDataArray"]=$conf["rawDataArrayB"];#爲原始資料的一維陣列
                $meanB=math::computeMean($conf["math::computeMean"]);
                unset($conf["math::computeMean"]);

                #如果取得平均數B失敗
                if($meanA["status"]=="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"]=$meanB;

                        #回傳結果
                        return $result;

                        }#if end

                #取得平均數B
                $meanB=$meanB["content"];

                #取得資料筆數
                $dataCounts=count($conf["rawDataArrayA"]);

                #預設總合爲0
                $sum=0;

                #求算A、B的變異數
                for($i=0;$i<$dataCounts;$i++){

                        #將每筆數據的(A的單筆數值-A類的平均)乘上(B的單筆數值-B類的平均)
                        $sum=$sum+($conf["rawDataArrayA"][$i]-$meanA)*($conf["rawDataArrayB"][$i]-$meanB);

                        }#迴圈結束

                #儲存結果
                $result["content"]=$sum/$dataCounts;

                #設置執行正常
                $result["status"]="true";

                #回傳結果
                return $result;

                }#function computeCovarianceOfNumericData end

        /*
        #函式說明:
        #計算一組數據的中間數值
        #回傳結果:
        #$result["status"],執行是否正常,"true"為正常,"false"為不正常.
        #$result["error"],錯誤訊息陣列.
        #$result["function"],當前執行的函數名稱.
        #$result["content"],最一組數據的中間數值.
        #必填參數:
        $conf["rawDataArray"]=array("");#要進行計算的數據陣列
        #可省略參數:
        #無.
        #參考資料:
        #無.
        #備註:
        #無.
        */
        public static function getMedianNum(&$conf){

                #初始化要回傳的內容
                $result=array();

                #記錄當前執行的函數名稱
                $result["function"]=__FUNCTION__;

                #如果 $conf 不為陣列
                if(gettype($conf)!="array"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"][]="\$conf變數須為陣列形態";

                        #如果傳入的參數為 null
                        if($conf==null){

                                #設置執行錯誤訊息
                                $result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";

                                }#if end

                        #回傳結果
                        return $result;

                        }#if end

                #檢查參數
                #函式說明:
                #檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
                #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
                #$reuslt["error"],執行不正常結束的錯訊息陣列.
                #$result["function"],當前執行的函式名稱.
                #$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
                #$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
                #$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
                #$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
                #$result["argu"],字串陣列,目前輸入的參數名稱陣列.
                #$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
                #$result["notNeedVar"],字串陣列,多餘的參數名稱.
                #必填寫的參數:
                #$conf["variableCheck::checkArguments"]["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
                $conf["variableCheck::checkArguments"]["varInput"]=&$conf;
                #$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
                $conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("rawDataArray");
                #$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object");
                $conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("array");
                #$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
                $conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
                #可以省略的參數:
                #$conf["variableCheck::checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。
                $conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";
                #$conf["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
                #$conf["skipableVariableName"]=array();
                #$conf["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
                #$conf["skipableVariableType"]=array();
                #$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
                #$conf["skipableVarDefaultValue"]=array("");
                #$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
                #$conf["arrayCountEqualCheck"][]=array();
                #參考資料來源:
                #array_keys=>http://php.net/manual/en/function.array-keys.php
                $checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
                unset($conf["variableCheck::checkArguments"]);

                #如果檢查參數失敗
                if($checkArguments["status"]=="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"]=$checkArguments;

                        #回傳結果
                        return $result;

                        }#if end

                #如果檢查不通過
                if($checkArguments["passed"]=="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"]=$checkArguments;

                        #回傳結果
                        return $result;

                        }#if end

                #初始化要回傳的中間數
                $result["content"]="";

                #取得有幾筆數據
                $dataCount=count($conf["rawDataArray"]);

                #如果數據數量爲偶數
                if($dataCount%2==0){

                        # (n/2+(n/2)/2) 爲中間數,n爲資料筆數
                        $medianNum=($conf["rawDataArray"][($dataCount/2)-1]+$conf["rawDataArray"][($dataCount/2)])/2;

                        }#if end

                #反之則爲奇數資料
                else{

                        #計算中間數字爲第幾個數字
                        (int)$medianNumAdd=($dataCount/2)+1;

                        #取得中間數
                        $medianNum=$conf["rawDataArray"][$medianNumAdd];

                        }#else end

                #取得中位數
                $result["content"]=$medianNum;

                #設置執行正常
                $result["status"]="true";

                #回傳中間數值
                return $result;

                }#function getMedianNum end

        /*
        #函式說明:
        #取得Q1、Q2、Q3(四分位數)
        #回傳結果:
        #$result["status"],執行是否正常,"true"為正常,"false"為不正常.
        #$result["error"],錯誤訊息陣列.
        #$result["function"],當前執行的函數名稱.
        #$result["Q1"],Q1值
        #$result["Q2"],Q2值
        #$result["Q3"],Q3值
        #必填參數:
        $conf["rawDataArray"]=array();#要求算四分位的數據
        #可省略參數:
        #無.
        #參考資料:
        #https://zh.wikipedia.org/zh-tw/%E5%9B%9B%E5%88%86%E4%BD%8D%E6%95%B0
        #備註:
        #無.
        */
        public static function getQuartile(&$conf){

                #初始化要回傳的內容
                $result=array();

                #記錄當前執行的函數名稱
                $result["function"]=__FUNCTION__;

                #如果 $conf 不為陣列
                if(gettype($conf)!="array"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"][]="\$conf變數須為陣列形態";

                        #如果傳入的參數為 null
                        if($conf==null){

                                #設置執行錯誤訊息
                                $result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";

                                }#if end

                        #回傳結果
                        return $result;

                        }#if end

                #檢查參數
                #函式說明:
                #檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
                #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
                #$reuslt["error"],執行不正常結束的錯訊息陣列.
                #$result["function"],當前執行的函式名稱.
                #$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
                #$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
                #$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
                #$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
                #$result["argu"],字串陣列,目前輸入的參數名稱陣列.
                #$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
                #$result["notNeedVar"],字串陣列,多餘的參數名稱.
                #必填寫的參數:
                #$conf["variableCheck::checkArguments"]["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
                $conf["variableCheck::checkArguments"]["varInput"]=&$conf;
                #$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
                $conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("rawDataArray");
                #$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object");
                $conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("array");
                #$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
                $conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
                #可以省略的參數:
                #$conf["variableCheck::checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。
                $conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";
                #$conf["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
                #$conf["skipableVariableName"]=array();
                #$conf["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
                #$conf["skipableVariableType"]=array();
                #$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
                #$conf["skipableVarDefaultValue"]=array("");
                #$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
                #$conf["arrayCountEqualCheck"][]=array();
                #參考資料來源:
                #array_keys=>http://php.net/manual/en/function.array-keys.php
                $checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
                unset($conf["variableCheck::checkArguments"]);

                #如果檢查參數失敗
                if($checkArguments["status"]=="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"]=$checkArguments;

                        #回傳結果
                        return $result;

                        }#if end

                #如果檢查不通過
                if($checkArguments["passed"]=="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"]=$checkArguments;

                        #回傳結果
                        return $result;

                        }#if end

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

                #如果 排序原始數據 失敗
                if($arrangeNum["status"]=="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"]=$arrangeNum;

                        #回傳結果
                        return $result;

                        }#if end

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

                #如果取得Q2失敗
                if($mediaNum["status"]=="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"]=$mediaNum;

                        #回傳結果
                        return $result;

                        }#if end

                #取得Q2
                $result["Q2"]=$mediaNum["content"];

                #取得原始輸入陣列的元素數目
                $varCount=count($arrangeNum["content"]);

                #初始化儲存用於計算Q1的元素陣列
                $q2RawArray=array();

                #另存小於等於Q2元素的陣列
                for($i=0;$i<$varCount;$i++){

                        #取得小於等於Q2的元素
                        if($arrangeNum["content"][$i]<=$result["Q2"]){

                                #取得小於等於Q2的元素
                                $q2RawArray[]=$arrangeNum["content"][$i];

                                }#if end

                        }#for end

                #求得Q1
                #函式說明:
                #計算一組數據的中間數值
                #回傳結果:
                #一組數據的中間數值
                #必填參數:
                $conf["math"]["getMedianNum"]["rawDataArray"]=$q2RawArray;#要進行計算的數據陣列
                $mediaNum=math::getMedianNum($conf["math"]["getMedianNum"]);
                unset($conf["math"]["getMedianNum"]);

                #如果取得Q1失敗
                if($mediaNum["status"]=="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"]=$mediaNum;

                        #回傳結果
                        return $result;

                        }#if end

                #取得Q1
                $result["Q1"]=$mediaNum["content"];

                #初始化儲存用於計算Q3的元素陣列
                $q3RawArray=array();

                #另存大於等於Q2元素的陣列
                for($i=0;$i<$varCount;$i++){

                        #取得小於等於Q2的元素
                        if($arrangeNum["content"][$i]>=$result["Q2"]){

                                #取得小於等於Q2的元素
                                $q3RawArray[]=$arrangeNum["content"][$i];

                                }#if end

                        }#for end

                #求得Q3
                #函式說明:
                #計算一組數據的中間數值
                #回傳結果:
                #一組數據的中間數值
                #必填參數:
                $conf["math"]["getMedianNum"]["rawDataArray"]=$q3RawArray;#要進行計算的數據陣列
                $mediaNum=math::getMedianNum($conf["math"]["getMedianNum"]);
                unset($conf["math"]["getMedianNum"]);

                #如果 取得中位數 失敗
                if($mediaNum["status"]=="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"]=$mediaNum;

                        #回傳結果
                        return $result;

                        }#if end

                #取得 Q3
                $result["Q3"]=$mediaNum["content"];

                #設置執行正常
                $result["status"]="true";

                #回傳結果
                return $result;

                }#function getQuarter end

        /*
        #函式說明:
        #判斷在常態分佈的條件下針對單一變量會有那些 outlier(異常值),結果會回傳一個陣列。
        #回傳結果:
        #$result["status"],執行是否正常,"true"為正常,"false"為不正常.
        #$result["error"],錯誤訊息陣列.
        #$result["function"],當前執行的函數名稱.
        #$result["content"],陣列,一個含有離羣值的陣列.
        #$result["founded"],字串,"true"代表有離群值,"false"代表沒有離群值出現.
        #必填參數:
        $conf["rawDataArray"];#爲原始數據的陣列
        #可省略參數:
        #無.
        #參考資料來源:
        #http://zhidao.baidu.com/question/252394894.html
        #備註:
        #無.
        */
        public static function findOutlier(&$conf){

                #初始化要回傳的內容
                $result=array();

                #記錄當前執行的函數名稱
                $result["function"]=__FUNCTION__;

                #如果 $conf 不為陣列
                if(gettype($conf)!="array"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"][]="\$conf變數須為陣列形態";

                        #如果傳入的參數為 null
                        if($conf==null){

                                #設置執行錯誤訊息
                                $result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";

                                }#if end

                        #回傳結果
                        return $result;

                        }#if end

                #檢查參數
                #函式說明:
                #檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
                #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
                #$reuslt["error"],執行不正常結束的錯訊息陣列.
                #$result["function"],當前執行的函式名稱.
                #$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
                #$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
                #$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
                #$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
                #$result["argu"],字串陣列,目前輸入的參數名稱陣列.
                #$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
                #$result["notNeedVar"],字串陣列,多餘的參數名稱.
                #必填寫的參數:
                #$conf["variableCheck::checkArguments"]["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
                $conf["variableCheck::checkArguments"]["varInput"]=&$conf;
                #$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
                $conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("rawDataArray");
                #$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object");
                $conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("array");
                #$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
                $conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
                #可以省略的參數:
                #$conf["variableCheck::checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。
                $conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";
                #$conf["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
                #$conf["skipableVariableName"]=array();
                #$conf["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
                #$conf["skipableVariableType"]=array();
                #$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
                #$conf["skipableVarDefaultValue"]=array("");
                #$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
                #$conf["arrayCountEqualCheck"][]=array();
                #參考資料來源:
                #array_keys=>http://php.net/manual/en/function.array-keys.php
                $checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
                unset($conf["variableCheck::checkArguments"]);

                #如果檢查參數失敗
                if($checkArguments["status"]=="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"]=$checkArguments;

                        #回傳結果
                        return $result;

                        }#if end

                #如果檢查不通過
                if($checkArguments["passed"]=="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"]=$checkArguments;

                        #回傳結果
                        return $result;

                        }#if end

                #初始化沒有找到離群值
                $result["founded"]="false";

                #函式說明:
                #排列一組數字
                #回傳結果:
                #經過排序後由大到小的數字陣列
                #$result[$i]["key"],爲$i-1個算元素的key
                #$result[$i]["value"], 爲$i-1個算元素的value
                #必填參數:
                $conf["math"]["arrangeNum"]["rawDataArray"]=$conf["rawDataArray"];#要排序的數字陣列
                #可省略參數:
                #$conf["asc"]="true";#如果爲 true 則排序順變爲從小到大
                $rawDataArray=math::arrangeNum($conf["math"]["arrangeNum"]);
                unset($conf["math"]["arrangeNum"]);

                #如果由大排到小失敗
                if($rawDataArray["status"]=="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"]=$rawDataArray;

                        #回傳結果
                        return $result;

                        }#if end

                #初始化轉化好的一維陣列
                $oneDimetionArray=$rawDataArray["content"];

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

                #如果尋找Q1,Q2,Q3失敗
                if($quartile["status"]=="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"]=$quartile;

                        #回傳結果
                        return $result;

                        }#if end

                #求算IQR(四分位距)
                $iqr=$quartile["Q3"]-$quartile["Q1"];

                #要檢測的元素有幾個就執行幾次
                for($i=0;$i<count($oneDimetionArray);$i++){

                        #如果要檢測離羣值的陣列元素數值減掉Q2後大於1.5倍IQR
                        if(abs($oneDimetionArray[$i]-$quartile["Q2"])>$iqr*1.5 ){

                                #取得離羣值
                                $outlier[]=$oneDimetionArray[$i];

                                }#if end

                        }#for end

                #如果有離群值
                if(isset($outlier)){

                        #設置有找到離群值
                        $result["founded"]="true";

                        #另存離群值
                        $result["content"]=$outlier;

                        }#if end

                #設置執行正常
                $result["status"]="true";

                #回傳離羣值
                return $result;

                }#function findOutlier end

        /*
        #函式說明:
        #找最大值,結果會回傳最大值.
        #回傳結果:
        #$result["status"],執行是否正常,"true"為正常,"false"為不正常.
        #$result["error"],錯誤訊息陣列.
        #$result["function"],當前執行的函數名稱.
        #$result["key"],最大值原先的key.
        #$result["value"],最大值的數字.
        #必填參數:
        #$conf["rawDataArray"],陣列,爲原始數據.
        $conf["rawDataArray"]=array();
        #可省略參數:
        #無.
        #參考資料:
        #無.
        #備註:
        #無.
        */
        public static function getMaxValue(&$conf){

                #初始化要回傳的內容
                $result=array();

                #記錄當前執行的函數名稱
                $result["function"]=__FUNCTION__;

                #如果 $conf 不為陣列
                if(gettype($conf)!="array"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"][]="\$conf變數須為陣列形態";

                        #如果傳入的參數為 null
                        if($conf==null){

                                #設置執行錯誤訊息
                                $result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";

                                }#if end

                        #回傳結果
                        return $result;

                        }#if end

                #檢查參數
                #函式說明:
                #檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
                #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
                #$reuslt["error"],執行不正常結束的錯訊息陣列.
                #$result["function"],當前執行的函式名稱.
                #$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
                #$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
                #$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
                #$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
                #$result["argu"],字串陣列,目前輸入的參數名稱陣列.
                #$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
                #$result["notNeedVar"],字串陣列,多餘的參數名稱.
                #必填寫的參數:
                #$conf["variableCheck::checkArguments"]["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
                $conf["variableCheck::checkArguments"]["varInput"]=&$conf;
                #$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
                $conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("rawDataArray");
                #$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object");
                $conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("array");
                #$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
                $conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
                #可以省略的參數:
                #$conf["variableCheck::checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。
                $conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";
                #$conf["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
                #$conf["skipableVariableName"]=array();
                #$conf["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
                #$conf["skipableVariableType"]=array();
                #$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
                #$conf["skipableVarDefaultValue"]=array("");
                #$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
                #$conf["arrayCountEqualCheck"][]=array();
                #參考資料來源:
                #array_keys=>http://php.net/manual/en/function.array-keys.php
                $checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
                unset($conf["variableCheck::checkArguments"]);

                #如果檢查參數失敗
                if($checkArguments["status"]=="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"]=$checkArguments;

                        #回傳結果
                        return $result;

                        }#if end

                #如果檢查不通過
                if($checkArguments["passed"]=="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"]=$checkArguments;

                        #回傳結果
                        return $result;

                        }#if end

                #初始化要回傳的陣列
                $outputArray=array();

                #初始化技計數的變數
                $count=0;

                #取得每個元素的key值
                foreach($conf["rawDataArray"] as $key=>$value){

                        #另存 key
                        $outputArray[$count]["key"]=$key;

                        #另存 value
                        $outputArray[$count]["value"]=$value;

                        #計數+1
                        $count++;

                        }#foreach end

                #假定第一個數字爲最大值
                $max=$outputArray[0];

                #找出最大值
                for($i=1;$i<count($outputArray);$i++){

                        #如果目前認爲的最大值小於後一個數字,
                        if($max["value"]<$outputArray[$i]["value"]){

                                #則將較大的數字放進 $max 裏面,
                                $max=$outputArray[$i];

                                }#判斷式結束

                        }#迴圈結束

                #取得最大值的原先key名稱
                $result["key"]=$max["key"];

                #取得最大值
                $result["value"]=$max["value"];

                #設置執行正常
                $result["status"]="true";

                #回傳最大值
                return $result;

                }#函式結束

        /*
        #函式說明:
        #找最小值,結果會回傳最小值
        #回傳內容:
        #$result["status"],執行是否正常,"true"為正常,"false"為不正常.
        #$result["error"],錯誤訊息陣列.
        #$result["function"],當前執行的函數名稱.
        #$result["key"],最大值原先的key.
        #$result["value"],陣列裏面最小的數值.
        #必填參數:
        $conf["rawDataArray"]=array();#爲原始數據
        #可省略參數:
        #無.
        #參考資料:
        #無.
        #備註:
        #無.
        */
        public static function getMinValue(&$conf){

                #初始化要回傳的內容
                $result=array();

                #記錄當前執行的函數名稱
                $result["function"]=__FUNCTION__;

                #如果 $conf 不為陣列
                if(gettype($conf)!="array"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"][]="\$conf變數須為陣列形態";

                        #如果傳入的參數為 null
                        if($conf==null){

                                #設置執行錯誤訊息
                                $result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";

                                }#if end

                        #回傳結果
                        return $result;

                        }#if end

                #檢查參數
                #函式說明:
                #檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
                #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
                #$reuslt["error"],執行不正常結束的錯訊息陣列.
                #$result["function"],當前執行的函式名稱.
                #$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
                #$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
                #$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
                #$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
                #$result["argu"],字串陣列,目前輸入的參數名稱陣列.
                #$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
                #$result["notNeedVar"],字串陣列,多餘的參數名稱.
                #必填寫的參數:
                #$conf["variableCheck::checkArguments"]["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
                $conf["variableCheck::checkArguments"]["varInput"]=&$conf;
                #$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
                $conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("rawDataArray");
                #$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object");
                $conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("array");
                #$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
                $conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
                #可以省略的參數:
                #$conf["variableCheck::checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。
                $conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";
                #$conf["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
                #$conf["skipableVariableName"]=array();
                #$conf["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
                #$conf["skipableVariableType"]=array();
                #$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
                #$conf["skipableVarDefaultValue"]=array("");
                #$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
                #$conf["arrayCountEqualCheck"][]=array();
                #參考資料來源:
                #array_keys=>http://php.net/manual/en/function.array-keys.php
                $checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
                unset($conf["variableCheck::checkArguments"]);

                #如果檢查參數失敗
                if($checkArguments["status"]=="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"]=$checkArguments;

                        #回傳結果
                        return $result;

                        }#if end

                #如果檢查不通過
                if($checkArguments["passed"]=="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"]=$checkArguments;

                        #回傳結果
                        return $result;

                        }#if end

                #初始化技計數的變數
                $count=0;

                #取得每個元素的key值
                foreach($conf["rawDataArray"] as $key=>$value){

                        #另存 key
                        $outputArray[$count]["key"]=$key;

                        #另存 value
                        $outputArray[$count]["value"]=$value;

                        #計數++
                        $count++;

                        }#foreach end

                #假定第一個數字爲最小值
                $min=$outputArray[0];

                #找出最小值
                for($i=1;$i<count($outputArray);$i++){

                        #如果目前認爲的最小值大於後一個數字,
                        if($min["value"]>$outputArray[$i]["value"]){

                                #則將較小的數字放進 $min 裏面,
                                $min=$outputArray[$i];

                                }#判斷式結束

                        }#迴圈結束

                #取得最小值的原先key名稱
                $result["key"]=$min["key"];

                #取得最小值
                $result["value"]=$min["value"];

                #設置執行正常
                $result["status"]="true";

                #回傳最大值
                return $result;

                }#函式結束

        /*
        #函式說明:
        #找絕對值後的最大值,結果會回傳最大值
        #回傳結果:
        #$result["status"],執行是否正常,"true"為正常,"false"為不正常.
        #$result["error"],錯誤訊息陣列.
        #$result["function"],當前執行的函數名稱.
        #$result["key"],絕對值後的最大值原先的key.
        #$result["value"],絕對值前的最大值數字.
        #$result["absValue"],絕對值後的最大值數字.
        #必填參數:
        #$conf["rawDataArray"]=array();#爲原始數據
        #可省略參數:
        #無.
        #參考資料:
        #無.
        #備註:
        #無.
        */
        public static function getMaxAbsoluteValue(&$conf){

                #初始化要回傳的內容
                $result=array();

                #記錄當前執行的函數名稱
                $result["function"]=__FUNCTION__;

                #如果 $conf 不為陣列
                if(gettype($conf)!="array"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"][]="\$conf變數須為陣列形態";

                        #如果傳入的參數為 null
                        if($conf==null){

                                #設置執行錯誤訊息
                                $result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";

                                }#if end

                        #回傳結果
                        return $result;

                        }#if end

                #檢查參數
                #函式說明:
                #檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
                #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
                #$reuslt["error"],執行不正常結束的錯訊息陣列.
                #$result["function"],當前執行的函式名稱.
                #$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
                #$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
                #$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
                #$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
                #$result["argu"],字串陣列,目前輸入的參數名稱陣列.
                #$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
                #$result["notNeedVar"],字串陣列,多餘的參數名稱.
                #必填寫的參數:
                #$conf["variableCheck::checkArguments"]["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
                $conf["variableCheck::checkArguments"]["varInput"]=&$conf;
                #$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
                $conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("rawDataArray");
                #$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object");
                $conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("array");
                #$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
                $conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
                #可以省略的參數:
                #$conf["variableCheck::checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。
                $conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";
                #$conf["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
                #$conf["skipableVariableName"]=array();
                #$conf["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
                #$conf["skipableVariableType"]=array();
                #$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
                #$conf["skipableVarDefaultValue"]=array("");
                #$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
                #$conf["arrayCountEqualCheck"][]=array();
                #參考資料來源:
                #array_keys=>http://php.net/manual/en/function.array-keys.php
                $checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
                unset($conf["variableCheck::checkArguments"]);

                #如果檢查參數失敗
                if($checkArguments["status"]=="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"]=$checkArguments;

                        #回傳結果
                        return $result;

                        }#if end

                #如果檢查不通過
                if($checkArguments["passed"]=="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"]=$checkArguments;

                        #回傳結果
                        return $result;

                        }#if end

                #初始化儲存要比較的數字陣列
                $outputArray=array();

                #初始化技計數的變數
                $count=0;

                #取得每個元素的key值
                foreach($conf["rawDataArray"] as $key=>$value){

                        #另存 key
                        $outputArray[$count]["key"]=$key;

                        #另存 value
                        $outputArray[$count]["value"]=$value;

                        #另存 絕對值過後的數值
                        $outputArray[$count]["absValue"]=abs($value);

                        #計數+1
                        $count++;

                        }#foreach end

                #假定第一個數字爲最大值
                $max["value"]=$outputArray[0]["value"];
                $max["key"]=$outputArray[0]["key"];
                $max["absValue"]=$outputArray[0]["absValue"];

                #找出最大值
                for($i=1;$i<count($conf["rawDataArray"]);$i++){

                        #如果目前認爲的最大值小於後一個數字,
                        if($max["absValue"]<$outputArray[$i]["absValue"]){

                                #則將較大的數字放進 $max 裏面,
                                $max["value"]=$outputArray[$i]["value"];
                                $max["key"]=$outputArray[$i]["key"];
                                $max["absValue"]=$outputArray[$i]["absValue"];

                                }#判斷式結束

                        }#迴圈結束

                #儲存絕對值後最大值的資訊
                $result["key"]=$max["key"];
                $result["value"]=$max["value"];
                $result["absValue"]=$max["absValue"];

                #設置執行正常
                $result["status"]="true";

                #回傳最大值
                return $result;

                }#函式結束

        /*
        #函式說明:
        #找絕對值後的最小值
        #回傳結果:
        #$result["status"],執行是否正常,"true"為正常,"false"為不正常.
        #$result["error"],錯誤訊息陣列.
        #$result["function"],當前執行的函數名稱.
        #$result["key"],絕對值後的最小值原先的key.
        #$result["value"],絕對值前的最小值數字.
        #$result["absValue"],絕對值後的最小值數字.
        #必填參數:
        $conf["rawDataArray"]=array();#爲原始數據
        #可省略參數:
        #無.
        #參考資料:
        #無.
        #備註:
        #無.
        */
        public static function getMinAbsoluteValue(&$conf){

                #初始化要回傳的內容
                $result=array();

                #記錄當前執行的函數名稱
                $result["function"]=__FUNCTION__;

                #如果 $conf 不為陣列
                if(gettype($conf)!="array"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"][]="\$conf變數須為陣列形態";

                        #如果傳入的參數為 null
                        if($conf==null){

                                #設置執行錯誤訊息
                                $result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";

                                }#if end

                        #回傳結果
                        return $result;

                        }#if end

                #檢查參數
                #函式說明:
                #檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
                #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
                #$reuslt["error"],執行不正常結束的錯訊息陣列.
                #$result["function"],當前執行的函式名稱.
                #$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
                #$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
                #$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
                #$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
                #$result["argu"],字串陣列,目前輸入的參數名稱陣列.
                #$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
                #$result["notNeedVar"],字串陣列,多餘的參數名稱.
                #必填寫的參數:
                #$conf["variableCheck::checkArguments"]["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
                $conf["variableCheck::checkArguments"]["varInput"]=&$conf;
                #$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
                $conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("rawDataArray");
                #$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object");
                $conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("array");
                #$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
                $conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
                #可以省略的參數:
                #$conf["variableCheck::checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。
                $conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";
                #$conf["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
                #$conf["skipableVariableName"]=array();
                #$conf["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
                #$conf["skipableVariableType"]=array();
                #$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
                #$conf["skipableVarDefaultValue"]=array("");
                #$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
                #$conf["arrayCountEqualCheck"][]=array();
                #參考資料來源:
                #array_keys=>http://php.net/manual/en/function.array-keys.php
                $checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
                unset($conf["variableCheck::checkArguments"]);

                #如果檢查參數失敗
                if($checkArguments["status"]=="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"]=$checkArguments;

                        #回傳結果
                        return $result;

                        }#if end

                #如果檢查不通過
                if($checkArguments["passed"]=="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"]=$checkArguments;

                        #回傳結果
                        return $result;

                        }#if end

                #初始化儲存要比較的數字陣列
                $outputArray=array();

                #初始化技計數的變數
                $count=0;

                #取得每個元素的key值
                foreach($conf["rawDataArray"] as $key=>$value){

                        #另存 key
                        $outputArray[$count]["key"]=$key;

                        #另存 value
                        $outputArray[$count]["value"]=$value;

                        #另存 絕對值過後的數值
                        $outputArray[$count]["absValue"]=abs($value);

                        #計數+1
                        $count++;

                        }#foreach end

                #假定第一個數字爲最大值
                $min["value"]=$outputArray[0]["value"];
                $min["key"]=$outputArray[0]["key"];
                $min["absValue"]=$outputArray[0]["absValue"];

                #找出最大值
                for($i=1;$i<count($conf["rawDataArray"]);$i++){

                        #如果目前認爲的最小值大於後一個數字,
                        if($min["absValue"]>$outputArray[$i]["absValue"]){

                                #則將較大的數字放進 $max 裏面,
                                $min["value"]=$outputArray[$i]["value"];
                                $min["key"]=$outputArray[$i]["key"];
                                $min["absValue"]=$outputArray[$i]["absValue"];

                                }#判斷式結束

                        }#迴圈結束

                #儲存絕對值後最大值的資訊
                $result["key"]=$min["key"];
                $result["value"]=$min["value"];
                $result["absValue"]=$min["absValue"];

                #設置執行正常
                $result["status"]="true";

                #回傳最大值
                return $result;

                }#函式結束

        /*
        #函式說明:
        #使用 min-max normalization 來正規化一組數據,結果會回傳一組正規化後的數據,$newDataArray[$i]爲該筆資料的第i筆經過正規化後的數值。
        #回傳結果:
        #$result["status"],執行是否正常,"true"為正常,"false"為不正常.
        #$result["error"],錯誤訊息陣列.
        #$result["function"],當前執行的函數名稱.
        #$result["original"] 爲回傳後的原始數據陣列,$result爲回傳後給與的變數名稱,可自行改變。
        #$result["normalizationed"] 爲正規化後的陣列數據
        #必填參數:
        $conf["rawDataArray"]=array();#爲傳入的原始數據參數.
        #可省略參數:
        #無.
        #參考資料:
        #無.
        #備註:
        #無.
        */
        public static function minMaxNormalization($conf){

                #初始化要回傳的內容
                $result=array();

                #記錄當前執行的函數名稱
                $result["function"]=__FUNCTION__;

                #如果 $conf 不為陣列
                if(gettype($conf)!="array"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"][]="\$conf變數須為陣列形態";

                        #如果傳入的參數為 null
                        if($conf==null){

                                #設置執行錯誤訊息
                                $result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";

                                }#if end

                        #回傳結果
                        return $result;

                        }#if end

                #檢查參數
                #函式說明:
                #檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
                #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
                #$reuslt["error"],執行不正常結束的錯訊息陣列.
                #$result["function"],當前執行的函式名稱.
                #$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
                #$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
                #$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
                #$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
                #$result["argu"],字串陣列,目前輸入的參數名稱陣列.
                #$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
                #$result["notNeedVar"],字串陣列,多餘的參數名稱.
                #必填寫的參數:
                #$conf["variableCheck::checkArguments"]["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
                $conf["variableCheck::checkArguments"]["varInput"]=&$conf;
                #$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
                $conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("rawDataArray");
                #$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object");
                $conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("array");
                #$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
                $conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
                #可以省略的參數:
                #$conf["variableCheck::checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。
                $conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";
                #$conf["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
                #$conf["skipableVariableName"]=array();
                #$conf["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
                #$conf["skipableVariableType"]=array();
                #$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
                #$conf["skipableVarDefaultValue"]=array("");
                #$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
                #$conf["arrayCountEqualCheck"][]=array();
                #參考資料來源:
                #array_keys=>http://php.net/manual/en/function.array-keys.php
                $checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
                unset($conf["variableCheck::checkArguments"]);

                #如果檢查參數失敗
                if($checkArguments["status"]=="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"]=$checkArguments;

                        #回傳結果
                        return $result;

                        }#if end

                #如果檢查不通過
                if($checkArguments["passed"]=="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"]=$checkArguments;

                        #回傳結果
                        return $result;

                        }#if end

                #取得最大值
                #回傳結果:
                #$result["status"],執行是否正常,"true"為正常,"false"為不正常.
                #$result["error"],錯誤訊息陣列.
                #$result["function"],當前執行的函數名稱.
                #$result["key"],最大值原先的key.
                #$result["value"],最大值的數字.
                $conf["math"]["getMaxValue"]["rawDataArray"]=$conf["rawDataArray"];
                $tempMax=math::getMaxValue($conf["math"]["getMaxValue"]);
                unset($conf["math"]["getMaxValue"]);

                #如果取得最大值失敗
                if($tempMax["status"]=="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"]=$tempMax;

                        #回傳結果
                        return $result;

                        }#if end

                #取得最大值
                $max=$tempMax["value"];

                #取得最小值
                #$result["status"],執行是否正常,"true"為正常,"false"為不正常.
                #$result["error"],錯誤訊息陣列.
                #$result["function"],當前執行的函數名稱.
                #$result["key"],最大值原先的key.
                #$result["value"],陣列裏面最小的數值.
                $conf["math"]["getMinValue"]["rawDataArray"]=$conf["rawDataArray"];
                $min=math::getMinValue($conf["math"]["getMinValue"]);
                unset($conf["math"]["getMinValue"]);

                #如果取得最小值失敗
                if($min["status"]=="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"]=$min;

                        #回傳結果
                        return $result;

                        }#if end

                #取得最小值
                $min=$min["value"];

                #將每組數據正規化
                for($i=0;$i<count($conf["rawDataArray"]);$i++){

                        #每筆數據減掉最小值然後再除以最大值減最小值
                        $newDataArray[$i]=($conf["rawDataArray"][$i]-$min)/($max-$min);

                        }#迴圈結束

                #儲存原始數據
                $result["original"]=$conf["rawDataArray"];

                #儲存正規化後的數據
                $result["normalizationed"]=$newDataArray;

                #設置執行正常
                $result["status"]="true";

                #回傳正規化完後的數據
                return $result;

                }#函式結束

        /*
        #函式說明:
        #求算該值需要10的幾次方去除才會最接近1,但小於1。
        #回傳結果:
        #$result["status"],執行是否正常,"true"為正常,"false"為不正常.
        #$result["error"],錯誤訊息陣列.
        #$result["function"],當前執行的函數名稱.
        #$result["content"],Jvalue,n值需要10的幾次方去除才會最接近1,但小於1.
        #必填參數:
        $conf["num"]="";#字串,爲輸入的數值.
        #可省略參數:
        #無.
        #參考資料:
        #無.
        #備註:
        #無.
        */
        public static function findJvalue(&$conf){

                #初始化要回傳的內容
                $result=array();

                #記錄當前執行的函數名稱
                $result["function"]=__FUNCTION__;

                #初始化 Jvalue
                $result["content"]="";

                #如果 $conf 不為陣列
                if(gettype($conf)!="array"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"][]="\$conf變數須為陣列形態";

                        #如果傳入的參數為 null
                        if($conf==null){

                                #設置執行錯誤訊息
                                $result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";

                                }#if end

                        #回傳結果
                        return $result;

                        }#if end

                #檢查參數
                #函式說明:
                #檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
                #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
                #$reuslt["error"],執行不正常結束的錯訊息陣列.
                #$result["function"],當前執行的函式名稱.
                #$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
                #$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
                #$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
                #$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
                #$result["argu"],字串陣列,目前輸入的參數名稱陣列.
                #$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
                #$result["notNeedVar"],字串陣列,多餘的參數名稱.
                #必填寫的參數:
                #$conf["variableCheck::checkArguments"]["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
                $conf["variableCheck::checkArguments"]["varInput"]=&$conf;
                #$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
                $conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("num");
                #$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object");
                $conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string");
                #$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
                $conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
                #可以省略的參數:
                #$conf["variableCheck::checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。
                $conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";
                #$conf["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
                #$conf["skipableVariableName"]=array();
                #$conf["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
                #$conf["skipableVariableType"]=array();
                #$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
                #$conf["skipableVarDefaultValue"]=array("");
                #$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
                #$conf["arrayCountEqualCheck"][]=array();
                #參考資料來源:
                #array_keys=>http://php.net/manual/en/function.array-keys.php
                $checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
                unset($conf["variableCheck::checkArguments"]);

                #如果檢查參數失敗
                if($checkArguments["status"]=="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"]=$checkArguments;

                        #回傳結果
                        return $result;

                        }#if end

                #如果檢查不通過
                if($checkArguments["passed"]=="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"]=$checkArguments;

                        #回傳結果
                        return $result;

                        }#if end

                #重複執行
                for($i=1;$i>0;$i++){

                        #當該值除以10的$i次方後小於1則停止
                        if(($conf["num"]/pow(10,$i))<1){

                                #給與 $jValue 數值
                                $result["content"]=$i;

                                #中斷,跳出迴圈
                                break;

                                }#判斷式結束

                        }#迴圈結束

                #設置執行正常
                $result["status"]="true";

                #回傳結果
                return $result;

                }#funciton findJvalue end

        /*
        #函式說明:
        #透過 Decimal scaling 來縮放原始數據
        #回傳結果:
        #$result["status"],執行是否正常,"true"為正常,"false"為不正常.
        #$result["error"],錯誤訊息陣列.
        #$result["function"],當前執行的函數名稱.
        #$result["content"],經過Decimal scaling縮放後的數據陣列.
        #必填參數:
        $conf["rawDataArray"]="";#爲傳入的原始數據參數
        #可省略參數:
        #無.
        #參考資料:
        #無.
        #備註:
        #無.
        */
        public static function computeDecimalScaling($conf){

                #初始化要回傳的內容
                $result=array();

                #記錄當前執行的函數名稱
                $result["function"]=__FUNCTION__;

                #如果 $conf 不為陣列
                if(gettype($conf)!="array"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"][]="\$conf變數須為陣列形態";

                        #如果傳入的參數為 null
                        if($conf==null){

                                #設置執行錯誤訊息
                                $result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";

                                }#if end

                        #回傳結果
                        return $result;

                        }#if end

                #檢查參數
                #函式說明:
                #檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
                #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
                #$reuslt["error"],執行不正常結束的錯訊息陣列.
                #$result["function"],當前執行的函式名稱.
                #$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
                #$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
                #$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
                #$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
                #$result["argu"],字串陣列,目前輸入的參數名稱陣列.
                #$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
                #$result["notNeedVar"],字串陣列,多餘的參數名稱.
                #必填寫的參數:
                #$conf["variableCheck::checkArguments"]["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
                $conf["variableCheck::checkArguments"]["varInput"]=&$conf;
                #$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
                $conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("rawDataArray");
                #$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object");
                $conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("array");
                #$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
                $conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
                #可以省略的參數:
                #$conf["variableCheck::checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。
                #$conf["variableCheck::checkArguments"]["variableCheck::checkArguments"]["canBeEmptyString"]="false";
                #$conf["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
                #$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("asc");
                #$conf["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
                #$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string");
                #$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
                #$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array("false");
                #$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
                #$conf["arrayCountEqualCheck"][]=array();
                #參考資料來源:
                #array_keys=>http://php.net/manual/en/function.array-keys.php
                $checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
                unset($conf["variableCheck::checkArguments"]);

                #如果檢查參數失敗
                if($checkArguments["status"]=="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"]=$checkArguments;

                        #回傳結果
                        return $result;

                        }#if end

                #如果檢查不通過
                if($checkArguments["passed"]=="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"]=$checkArguments;

                        #回傳結果
                        return $result;

                        }#if end

                #計算資料總筆數
                $dataCounts=count($conf["rawDataArray"]);

                #取得該筆資料的絕對值後的最大值
                #回傳結果:
                #$result["status"],執行是否正常,"true"為正常,"false"為不正常.
                #$result["error"],錯誤訊息陣列.
                #$result["function"],當前執行的函數名稱.
                #$result["key"],絕對值後的最大值原先的key.
                #$result["value"],絕對值前的最大值數字.
                #$result["absValue"],絕對值後的最大值數字.
                $conf["math"]["getMaxAbsoluteValue"]["rawDataArray"]=$conf["rawDataArray"];
                $maxAbs=math::getMaxAbsoluteValue($conf["math"]["getMaxAbsoluteValue"]);
                unset($conf["math"]["getMaxAbsoluteValue"]);

                #如果 取得該筆資料的絕對值後的最大值 失敗
                if($maxAbs["status"]=="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"]=$maxAbs;

                        #回傳結果
                        return $result;

                        }#if end

                #取得該筆資料的絕對值後的最大值
                $maxAbs=$maxAbs["absValue"];

                #求算最大值需要10的幾次方去除才會最接近1,但小於1。
                #回傳結果:
                #$result["status"],執行是否正常,"true"為正常,"false"為不正常.
                #$result["error"],錯誤訊息陣列.
                #$result["function"],當前執行的函數名稱.
                #$result["content"],Jvalue,n值需要10的幾次方去除才會最接近1,但小於1.
                $conf["math"]["findJvalue"]["num"]=$maxAbs."";
                $findJvalue=math::findJvalue($conf["math"]["findJvalue"]);
                unset($conf["math"]["findJvalue"]);

                #如果取得jValue失敗
                if($findJvalue["status"]=="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"]=$findJvalue;

                        #回傳結果
                        return $result;

                        }#if end

                #取得jValue
                $jValue=$findJvalue["content"];

                #將原始數據進行 Decimal scaling
                for($i=0;$i<count($conf["rawDataArray"]);$i++){

                        #每筆數除以10的j次方
                        $newDataArray[$i]=$conf["rawDataArray"][$i]/pow(10,$jValue);

                        }#迴圈結束

                #將 scaling 化的數據存入 $result["oldValue"] 陣列變數裏面
                $result["oldValue"]=$conf["rawDataArray"];

                #將原始數據存入 $result["oldValue"] 陣列變數裏面
                $result["newValue"]=$newDataArray;

                #設置執行正常
                $result["status"]="true";

                #回傳結果
                return $result;

                }#function computeDecimalScaling end

        /*
        #函式說明:
        #將用於統計分析的原始陣列裏面,每筆資料的特定欄位爲0的時候,將該筆樣本踢除
        #回傳結果:
        #$result["status"],執行是否正常,"true"為正常,"false"為不正常.
        #$result["error"],錯誤訊息陣列.
        #$result["function"],當前執行的函數名稱.
        #$result["rowTitle"],欄位的標題.
        #$result["content"],處理好的二維陣列.
        #$result["content"][lineNumber]["columnName"],lineNumber爲第幾列;columnName爲欄位的名稱,若沒有標題列將會以數字的0、1、2、3~n去排列
        #必填參數:
        #$conf["varArray"],二維陣列,要處理的陣列變數$conf["varArray"][$i][$j],代表第$i列第$j行的數據,$conf["varArray"][0],可代表各欄位的標題列.
        $conf["varArray"]=array(array());
        #$conf["checkedColumn"],字串,要檢測是否含有0的欄位名稱;亦即 $conf["varArray"]["columnName"] 的 columnName 爲何.
        $conf["checkedColumn"]=array();
        #可省略參數:
        #$conf["repeatExecTimeLimitTo"],整數,$conf["varArray"]底下的陣列,每執行一次後要重新給與多少執行時間,預設為 php.ini 的max_execution_time.
        #$conf["repeatExecTimeLimitTo"]=ini_get("max_execution_time");
        #參考資料:
        #無.
        #備註:
        #若資料量大,則建議在command line環境執行.
        */
        public static function eraseContainZeroData(&$conf){

                #初始化要回傳的內容
                $result=array();

                #記錄當前執行的函數名稱
                $result["function"]=__FUNCTION__;

                #如果 $conf 不為陣列
                if(gettype($conf)!="array"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"][]="\$conf變數須為陣列形態";

                        #如果傳入的參數為 null
                        if($conf==null){

                                #設置執行錯誤訊息
                                $result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";

                                }#if end

                        #回傳結果
                        return $result;

                        }#if end

                #檢查參數
                #函式說明:
                #檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
                #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
                #$reuslt["error"],執行不正常結束的錯訊息陣列.
                #$result["function"],當前執行的函式名稱.
                #$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
                #$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
                #$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
                #$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
                #$result["argu"],字串陣列,目前輸入的參數名稱陣列.
                #$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
                #$result["notNeedVar"],字串陣列,多餘的參數名稱.
                #必填寫的參數:
                #$conf["variableCheck::checkArguments"]["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
                $conf["variableCheck::checkArguments"]["varInput"]=&$conf;
                #$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
                $conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("varArray","checkedColumn");
                #$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object");
                $conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("array","array");
                #$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
                $conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
                #可以省略的參數:
                #$conf["variableCheck::checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。
                $conf["variableCheck::checkArguments"]["variableCheck::checkArguments"]["canBeEmptyString"]="false";
                #$conf["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
                $conf["variableCheck::checkArguments"]["skipableVariableName"]=array("repeatExecTimeLimitTo");
                #$conf["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
                $conf["variableCheck::checkArguments"]["skipableVariableType"]=array("integer");
                #$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
                $conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array(ini_get("max_execution_time"));
                #$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
                #$conf["arrayCountEqualCheck"][]=array();
                #參考資料來源:
                #array_keys=>http://php.net/manual/en/function.array-keys.php
                $checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
                unset($conf["variableCheck::checkArguments"]);

                #如果檢查參數失敗
                if($checkArguments["status"]=="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"]=$checkArguments;

                        #回傳結果
                        return $result;

                        }#if end

                #如果檢查不通過
                if($checkArguments["passed"]=="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"]=$checkArguments;

                        #回傳結果
                        return $result;

                        }#if end

                #有幾筆資料就執行幾次
                for($i=0;$i<count($conf["varArray"]);$i++){

                        #初始化要不要捨棄該筆資料的變數
                        $drop="false";

                        #針對第$i+1列
                        foreach($conf["varArray"][$i] as $questName=>$questVal){

                                #函式說明:
                                #檢查某個元素是否存在於該一維陣列變數裏面
                                #回傳結果:
                                #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
                                #$reuslt["error"],執行不正常結束的錯訊息陣列.
                                #$result["function"],當前執行的函式名稱.
                                #$result["founded"],"true",表示該元素已經存在於該一維陣列變數裏面,"false"表示該元素不存在於該一維陣列變數裏面.
                                #必填寫的參數:
                                $conf["variableCheck"]["checkElementExistFromAnArray"]["searchString"]=$questName;#要搜尋的元素內容
                                $conf["variableCheck"]["checkElementExistFromAnArray"]["searchArray"]=$conf["checkedColumn"];#要搜尋的陣列變數
                                $checkResult=variableCheck::checkElementExistFromAnArray($conf["variableCheck"]["checkElementExistFromAnArray"]);
                                unset($conf["variableCheck"]["checkElementExistFromAnArray"]);

                                #如果檢查失敗
                                if($checkResult["status"]=="false"){

                                        #設置執行失敗
                                        $result["status"]="false";

                                        #設置執行錯誤訊息
                                        $result["error"]=$checkResult;

                                        #回傳結果
                                        return $result;

                                        }#if end

                                #如果是要檢查的欄位
                                if($checkResult["founded"]==="true"){

                                        #如果值等於 0
                                        if($questVal===0 || $questVal==="0"){

                                                #標記該筆樣本要捨棄
                                                $drop="true";

                                                #跳出foreach
                                                break;

                                                }#if end

                                        }#if end

                                }#foreache end

                        #如果沒有要捨棄該樣本標記
                        if($drop!="true"){

                                #取得該筆資料
                                $result["content"][]=$conf["varArray"][$i];

                                }#if end

                        #函數說明:
                        #延長php的執行時間,每呼叫一次會初始化執行時間爲0,然後設定下次可以執行多久.
                        #回傳結果:
                        #$result["status"],執行是否正常,"true"為正常,"false"為不正常.
                        #$result["error"],錯誤訊息陣列.
                        #$result["function"],當前執行的函數名稱.
                        #必填參數:
                        #$conf["sec"],整數,要延長多少執行時間,單位爲秒
                        $conf["config::delayRunTimeExectionMax"]["sec"]=$conf["repeatExecTimeLimitTo"];
                        #參考資料:
                        #http://php.net/manual/en/function.set-time-limit.php
                        $delayRunTimeExectionMax=config::delayRunTimeExectionMax($conf["config::delayRunTimeExectionMax"]);
                        unset($conf["config::delayRunTimeExectionMax"]);

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

                                #設定類別圖繪製失敗
                                $result["status"]="false";

                                #設定該檔案的類別圖繪製失敗提示
                                $result["error"]=$delayRunTimeExectionMax;

                                #回傳結果
                                return $result;

                                }#if end

                        }#for end

                #設置執行正常
                $result["status"]="true";

                #回傳結果
                return $result;

                }#funciton eraseContainZeroData end

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

                #初始化要回傳的內容
                $result=array();

                #記錄當前執行的函數名稱
                $result["function"]=__FUNCTION__;

                #如果 $conf 不為陣列
                if(gettype($conf)!="array"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"][]="\$conf變數須為陣列形態";

                        #如果傳入的參數為 null
                        if($conf==null){

                                #設置執行錯誤訊息
                                $result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";

                                }#if end

                        #回傳結果
                        return $result;

                        }#if end

                #檢查參數
                #函式說明:
                #檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
                #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
                #$reuslt["error"],執行不正常結束的錯訊息陣列.
                #$result["function"],當前執行的函式名稱.
                #$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
                #$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
                #$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
                #$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
                #$result["argu"],字串陣列,目前輸入的參數名稱陣列.
                #$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
                #$result["notNeedVar"],字串陣列,多餘的參數名稱.
                #必填寫的參數:
                #$conf["variableCheck::checkArguments"]["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
                $conf["variableCheck::checkArguments"]["varInput"]=&$conf;
                #$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
                $conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("inputArray");
                #$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object");
                $conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("array");
                #$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
                $conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
                #可以省略的參數:
                #$conf["variableCheck::checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。
                $conf["variableCheck::checkArguments"]["variableCheck::checkArguments"]["canBeEmptyString"]="false";
                #$conf["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
                #$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("asc");
                #$conf["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
                #$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string");
                #$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
                #$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array("false");
                #$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
                #$conf["arrayCountEqualCheck"][]=array();
                #參考資料來源:
                #array_keys=>http://php.net/manual/en/function.array-keys.php
                $checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
                unset($conf["variableCheck::checkArguments"]);

                #如果檢查參數失敗
                if($checkArguments["status"]=="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"]=$checkArguments;

                        #回傳結果
                        return $result;

                        }#if end

                #如果檢查不通過
                if($checkArguments["passed"]=="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"]=$checkArguments;

                        #回傳結果
                        return $result;

                        }#if end

                #針對每個數字陣列元素
                foreach($conf["inputArray"] as $numKey=>$numValue){

                        #取成小於等於$numValue的正整數,與大於等於$numValue的負整數
                        $numValue=round($numValue,0,PHP_ROUND_HALF_EVEN);

                        #轉換為 int 型別,並存在原始以key為名的陣列中
                        $result["content"][$numKey]=$numValue;

                        }#foreach end

                #設置執行成功的識別
                $result["status"]="true";

                #回傳結果
                return $result;

                }#function changeToIntValue end

        /*
        #函式說明:
        #亂數產生特定陣列裡面的內容
        #回傳結果:
        #$result["status"],執行正常與否,"true"為正常,"false"為不正常.
        #$result["function"],當前執行的函數名稱.
        #$result["error"],錯誤訊息陣列.
        #$result["content"]["name"],產生的元素在$conf["randomArray"]裡面的key是?
        #$result["content"]["value"],產生的元素內容.
        #必填參數:
        #$conf["randomArray"],字串陣列,要隨機產生的元素.
        $conf["randomArray"]=array();
        #可省略參數:
        #無
        #參考資料:
        #無.
        #備註:
        #無.
        */
        public static function randomFromArray($conf){

                #初始化要回傳的內容
                $result=array();

                #記錄當前執行的函數名稱
                $result["function"]=__FUNCTION__;

                #如果 $conf 不為陣列
                if(gettype($conf)!="array"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"][]="\$conf變數須為陣列形態";

                        #如果傳入的參數為 null
                        if($conf==null){

                                #設置執行錯誤訊息
                                $result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";

                                }#if end

                        #回傳結果
                        return $result;

                        }#if end

                #檢查參數
                #函式說明:
                #檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
                #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
                #$reuslt["error"],執行不正常結束的錯訊息陣列.
                #$result["function"],當前執行的函式名稱.
                #$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
                #$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
                #$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
                #$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
                #$result["argu"],字串陣列,目前輸入的參數名稱陣列.
                #$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
                #$result["notNeedVar"],字串陣列,多餘的參數名稱.
                #必填寫的參數:
                #$conf["variableCheck::checkArguments"]["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
                $conf["variableCheck::checkArguments"]["varInput"]=&$conf;
                #$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
                $conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("randomArray");
                #$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object");
                $conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("array");
                #$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
                $conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
                #可以省略的參數:
                #$conf["variableCheck::checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。
                $conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";
                #$conf["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
                #$conf["skipableVariableName"]=array();
                #$conf["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
                #$conf["skipableVariableType"]=array();
                #$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
                #$conf["skipableVarDefaultValue"]=array("");
                #$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
                #$conf["arrayCountEqualCheck"][]=array();
                #參考資料來源:
                #array_keys=>http://php.net/manual/en/function.array-keys.php
                $checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
                unset($conf["variableCheck::checkArguments"]);

                #如果檢查參數失敗
                if($checkArguments["status"]=="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"]=$checkArguments;

                        #回傳結果
                        return $result;

                        }#if end

                #如果檢查不通過
                if($checkArguments["passed"]=="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"]=$checkArguments;

                        #回傳結果
                        return $result;

                        }#if end

                #取得用於隨機產生的元素數目
                $randomCount=\count($conf["randomArray"]);

                #產生的亂數
                $number=\rand(0,$randomCount-1);

                #取得產生出來的亂數
                $result["content"]["key"]=$number;

                #取得亂數對應的內容
                $result["content"]["value"]=$conf["randomArray"][$number];

                #設置執行成功
                $result["status"]="true";

                #回傳結果
                return $result;

                }#function randomFromArray end

        /*
        #函式說明:
        #亂數產生特定陣列裡面的內容,可以多次產生並回傳結果.
        #回傳結果:
        #$result["status"],執行正常與否,"true"為正常,"false"為不正常.
        #$result["function"],當前執行的函數名稱.
        #$result["error"],錯誤訊息陣列.
        #$result["argu"],使用的參數.
        #$result["content"]["name"][$i],陣列,產生的第$n+1個元素在$conf["randomArray"]裡面的key是?
        #$result["content"]["value"][$i],陣列,產生的第$n+1個元素內容.
        #$result["content"]["str"],字串,產生的內容透過字串方式串接的結果.
        #必填參數:
        #$conf["randomArray"],字串陣列,要隨機產生的元素.
        $conf["randomArray"]=array();
        #可省略參數:
        #$conf["repeatTime"],字串整數,要產生幾次,預設為"1"次.
        #$conf["repeatTime"]="1";
        #參考資料:
        #無.
        #備註:
        #無.
        */
        public static function randomFromArrayManyTimes(&$conf){

                #初始化要回傳的內容
                $result=array();

                #記錄當前執行的函數名稱
                $result["function"]=__FUNCTION__;

                #如果 $conf 不為陣列
                if(gettype($conf)!="array"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"][]="\$conf變數須為陣列形態";

                        #如果傳入的參數為 null
                        if($conf==null){

                                #設置執行錯誤訊息
                                $result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";

                                }#if end

                        #回傳結果
                        return $result;

                        }#if end

                #取得使用的參數
                $result["argu"]=$conf;

                #初始化記錄字串串接後的結果
                $result["content"]["str"]="";

                #函式說明:
                #檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容.
                #回傳結果:
                #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
                #$result["error"],執行不正常結束的錯訊息陣列.
                #$result["simpleError"],簡單表示的錯誤訊息.
                #$result["function"],當前執行的函式名稱.
                #$result["argu"],設置給予的參數.
                #$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
                #$result[$shouldBeCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
                #$result[$shouldBeCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
                #$result[$shouldBeCheckedVarName]["error"],每個參數設定的錯誤訊息
                #$result["shouldNotBeEmpty"],不應該為空字串或控陣列的變數.
                #$result["argu"],字串陣列,目前輸入的參數名稱陣列.
                #$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
                #$result["notNeedVar"],字串陣列,多餘的參數名稱.
                #必填參數:
                #$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
                $conf["variableCheck::checkArguments"]["varInput"]=&$conf;
                #$conf["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
                $conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
                #可省略參數:
                #$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
                $conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("randomArray");
                #$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object"); , null、any代表不指定變數形態.其中 resource也包含"resource (closed)".
                $conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string");
                #$conf["canBeEmptyString"],字串,必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true",可以為空字串.
                $conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";
                #$conf["canNotBeEmpty"],字串陣列,哪些必填參數的內容不得為空字串或空陣列,僅當$conf["canBeEmptyString"]為"true"時會生效.
                #$conf["canNotBeEmpty"]=array();
                #$conf["canBeEmpty"],字串陣列,哪些必填參數的內容可為空字串或空陣列,僅當$conf["canBeEmptyString"]為"false"時會生效.
                #$conf["canBeEmpty"]=array();
                #$conf["skipableVariableCanNotBeEmpty"],字串陣列,哪些可省略參數不可以為空字串或空陣列.
                $conf["variableCheck::checkArguments"]["skipableVariableCanNotBeEmpty"]=array("repeatTime");
                #$conf["skipableVariableName"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
                $conf["variableCheck::checkArguments"]["skipableVariableName"]=array("repeatTime");
                #$conf["skipableVariableType"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
                $conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string");
                #$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
                $conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array("1");
                #$conf["disallowAllSkipableVarIsEmpty"],字串,是否允許每個可省略參數都為空字串,預設為"true"允許,反之為"false".
                #$conf["disallowAllSkipableVarIsEmpty"]="";
                #$conf["disallowAllSkipableVarIsEmptyArray"],字串,是否允許每個可省略參數都為空陣列,預設為"true"允許,反之為"false".
                #$conf["disallowAllSkipableVarIsEmptyArray"]="";
                #$conf["disallowAllSkipableVarNotExist"],字串,是否不允許每個可省略參數都不存在,預設為"false"代表允許,反之為"true".
                #$conf["disallowAllSkipableVarNotExist"]="";
                #$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
                #$conf["arrayCountEqualCheck"][]=array();
                #參考資料:
                #array_keys=>http://php.net/manual/en/function.array-keys.php
                #備註:
                #無.
                $checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
                unset($conf["variableCheck::checkArguments"]);

                #如果檢查參數失敗
                if($checkArguments["status"]=="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"]=$checkArguments;

                        #回傳結果
                        return $result;

                        }#if end

                #如果檢查不通過
                if($checkArguments["passed"]=="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"]=$checkArguments;

                        #回傳結果
                        return $result;

                        }#if end

                #執行 $conf["repeatTime"] 數
                for($i=0;$i<$conf["repeatTime"];$i++){

                        #函式說明:
                        #亂數產生特定陣列裡面的內容
                        #回傳結果:
                        #$result["status"],執行正常與否,"true"為正常,"false"為不正常.
                        #$result["function"],當前執行的函數名稱.
                        #$result["error"],錯誤訊息陣列.
                        #$result["content"]["name"],產生的元素在$conf["randomArray"]裡面的key是?
                        #$result["content"]["value"],產生的元素內容.
                        #必填參數:
                        #$conf["randomArray"],字串陣列,要隨機產生的元素.
                        $conf["math::randomFromArray"]["randomArray"]=$conf["randomArray"];
                        #可省略參數:
                        #無
                        #參考資料:
                        #無.
                        #備註:
                        #無.
                        $randomFromArray=math::randomFromArray($conf["math::randomFromArray"]);
                        unset($conf["math::randomFromArray"]);

                        #如果執行異常
                        if($randomFromArray["status"]=="false"){

                                #設置執行失敗
                                $result["status"]="false";

                                #設置執行錯誤訊息
                                $result["error"]=$randomFromArray;

                                #回傳結果
                                return $result;

                                }#if end

                        #取得該次產生元素的key
                        $result["content"]["name"][]=$randomFromArray["content"]["name"];

                        #取得該次產生元素的value
                        $result["content"]["value"][]=$randomFromArray["content"]["value"];

                        #串接該次產生元素的value
                        $result["content"]["str"]=$result["content"]["str"].$randomFromArray["content"]["value"];

                        }#for end

                #設置結果正常
                $result["status"]="true";

                #回傳結果
                return $result;

                }#function randomFromArrayManyTimes end

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

                #初始化要回傳的內容
                $result=array();

                #記錄當前執行的函數名稱
                $result["function"]=__FUNCTION__;

                #如果 $conf 不為陣列
                if(gettype($conf)!="array"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"][]="\$conf變數須為陣列形態";

                        #如果傳入的參數為 null
                        if($conf==null){

                                #設置執行錯誤訊息
                                $result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";

                                }#if end

                        #回傳結果
                        return $result;

                        }#if end

                #取得使用的參數
                $result["argu"]=$conf;

                #檢查參數
                #函式說明:
                #檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
                #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
                #$reuslt["error"],執行不正常結束的錯訊息陣列.
                #$result["function"],當前執行的函式名稱.
                #$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
                #$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
                #$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
                #$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
                #$result["argu"],字串陣列,目前輸入的參數名稱陣列.
                #$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
                #$result["notNeedVar"],字串陣列,多餘的參數名稱.
                #必填寫的參數:
                #$conf["variableCheck::checkArguments"]["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
                $conf["variableCheck::checkArguments"]["varInput"]=&$conf;
                #$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
                $conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("rangeF");
                #$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object");
                $conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("array");
                #$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
                $conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
                #可以省略的參數:
                #$conf["variableCheck::checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。
                $conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";
                #$conf["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
                $conf["variableCheck::checkArguments"]["skipableVariableName"]=array("rangeT");
                #$conf["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
                $conf["variableCheck::checkArguments"]["skipableVariableType"]=array("array");
                #$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
                $conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array(null);
                #$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
                #$conf["arrayCountEqualCheck"][]=array();
                #參考資料來源:
                #array_keys=>http://php.net/manual/en/function.array-keys.php
                $checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
                unset($conf["variableCheck::checkArguments"]);

                #如果檢查參數失敗
                if($checkArguments["status"]=="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"]=$checkArguments;

                        #回傳結果
                        return $result;

                        }#if end

                #如果檢查不通過
                if($checkArguments["passed"]=="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"]=$checkArguments;

                        #回傳結果
                        return $result;

                        }#if end

                #如果右手方對應的整數陣列不存在
                if(!isset($conf["rangeT"])){

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

                                #設置rangeT
                                $conf["rangeT"][]=$i;

                                }#for end

                        }#if end

                #取得左手邊的數值數目
                $rangeFc=count($conf["rangeF"]);

                #取得右手邊的數值數目
                $rangeTc=count($conf["rangeT"]);

                #一單位的 $rangeTc 等於多少 $rangeFc
                $tPerunitF=$rangeTc/$rangeFc;

                #針對每個 $rangeFc
                for($i=0;$i<$rangeFc;$i++){

                        #設置轉換的結果
                        $result["content"][$conf["rangeF"][$i]]=$tPerunitF*$i+$conf["rangeT"][0];

                        #轉換後的數值不能超過左手邊的最大值
                        if($result["content"][$conf["rangeF"][$i]]>$conf["rangeT"][count($conf["rangeT"])-1]){

                                #防止左手邊的最大數值
                                $result["content"][$conf["rangeF"][$i]]=$conf["rangeT"][count($conf["rangeT"])-1];

                                }#if end

                        }#for end

                #初始化執行正常
                $result["status"]="true";

                #回傳結果
                return $result;

                }#function key2value end

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

                #初始化要回傳的內容
                $result=array();

                #記錄當前執行的函數名稱
                $result["function"]=__FUNCTION__;

                #如果 $conf 不為陣列
                if(gettype($conf)!="array"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"][]="\$conf變數須為陣列形態";

                        #如果傳入的參數為 null
                        if($conf==null){

                                #設置執行錯誤訊息
                                $result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";

                                }#if end

                        #回傳結果
                        return $result;

                        }#if end

                #取得使用的參數
                $result["argu"]=$conf;

                #檢查參數
                #函式說明:
                #檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
                #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
                #$reuslt["error"],執行不正常結束的錯訊息陣列.
                #$result["function"],當前執行的函式名稱.
                #$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
                #$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
                #$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
                #$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
                #$result["argu"],字串陣列,目前輸入的參數名稱陣列.
                #$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
                #$result["notNeedVar"],字串陣列,多餘的參數名稱.
                #必填寫的參數:
                #$conf["variableCheck::checkArguments"]["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
                $conf["variableCheck::checkArguments"]["varInput"]=&$conf;
                #$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
                $conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("value","reference");
                #$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object");
                $conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("double","array");
                #$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
                $conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
                #可以省略的參數:
                #$conf["variableCheck::checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。
                #$conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";
                #$conf["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
                #$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("rangeT");
                #$conf["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
                #$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("array");
                #$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
                #$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array(null);
                #$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
                #$conf["arrayCountEqualCheck"][]=array();
                #參考資料來源:
                #array_keys=>http://php.net/manual/en/function.array-keys.php
                $checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
                unset($conf["variableCheck::checkArguments"]);

                #如果檢查參數失敗
                if($checkArguments["status"]=="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"]=$checkArguments;

                        #回傳結果
                        return $result;

                        }#if end

                #如果檢查不通過
                if($checkArguments["passed"]=="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"]=$checkArguments;

                        #回傳結果
                        return $result;

                        }#if end

                #儲存最後發現小於 $value 的 key
                $lastKey=0;

                #儲存最後發現小於 $value 的 valueInKey
                $lastValue=0;

                #儲存最先發現大於 $value 的 key
                $thisKey=0;

                #儲存最先發現大於 $value 的 valueInKey
                $thisValue=0;

                #針對每個參照數值
                foreach($conf["reference"] as $key=>$value){

                        #如果要查的數值大於當前對應的 $key
                        if($conf["value"]>$value){

                                #儲存最後發現小於 $value 的 key
                                $lastKey=$key;

                                #儲存最後發現小於 $value 的 valueInKey
                                $lastValue=$value;

                                #如果已經是最後一個數值了
                                if($key===count($conf["reference"])-1){

                                        #儲存最先發現大於 $value 的 key
                                        $thisKey=$key;

                                        #儲存最先發現大於 $value 的 valueInKey
                                        $thisValue=$value;

                                        }#if end

                                #繼續執行
                                continue;

                                }#if end

                        #反之
                        else{

                                #儲存最先發現大於 $value 的 key
                                $thisKey=$key;

                                #儲存最先發現大於 $value 的 valueInKey
                                $thisValue=$value;

                                #跳出 foreach
                                break;

                                }#else end

                        }#foreach end

                #取得要計算數值對於上個value的差距
                $rangeLeft=$value-$lastValue;

                #取得要計算數值對於下個value的差距
                $rangeRight=$thisValue-$value;

                #如果比較靠近上個數值
                if($rangeLeft<$rangeRight){

                        #設置結果為上個 key
                        $result["content"]=$lastKey;

                        }#if end

                #反之
                else{
                        #設置結果為下個 key
                        $result["content"]=$thisKey;

                        }#else end

                #設置執行正常
                $result["status"]="true";

                #回傳結果
                return $result;

                }#function value2key end

        /*
        #函式說明:
        #建立一對一的數值對照表,左右都對應到整數值.
        #回傳結果:
        #$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);
        #可省略參數:
        #無.
        #參考資料:
        #無.
        #備註:
        #無.
        */
        public static function fixedKeyToValueReversed(&$conf=array()){

                #初始化要回傳的內容
                $result=array();

                #記錄當前執行的函數名稱
                $result["function"]=__FUNCTION__;

                #如果 $conf 不為陣列
                if(gettype($conf)!="array"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"][]="\$conf變數須為陣列形態";

                        #如果傳入的參數為 null
                        if($conf==null){

                                #設置執行錯誤訊息
                                $result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";

                                }#if end

                        #回傳結果
                        return $result;

                        }#if end

                #取得使用的參數
                $result["argu"]=$conf;

                #檢查參數
                #函式說明:
                #檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
                #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
                #$reuslt["error"],執行不正常結束的錯訊息陣列.
                #$result["function"],當前執行的函式名稱.
                #$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
                #$result[$shouldBtCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
                #$result[$shouldBtCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
                #$result[$shouldBtCheckedVarName]["error"],每個參數設定的錯誤訊息
                #$result["argu"],字串陣列,目前輸入的參數名稱陣列.
                #$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
                #$result["notNeedVar"],字串陣列,多餘的參數名稱.
                #必填寫的參數:
                #$conf["variableCheck::checkArguments"]["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
                $conf["variableCheck::checkArguments"]["varInput"]=&$conf;
                #$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
                $conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("rangeF","rangeT");
                #$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object");
                $conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("array","array");
                #$conf["variableCheck::checkArguments"]["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
                $conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
                #可以省略的參數:
                #$conf["variableCheck::checkArguments"]["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true"。
                #$conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";
                #$conf["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
                #$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("rangeT");
                #$conf["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
                #$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("array");
                #$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
                #$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array(null);
                #$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
                #$conf["arrayCountEqualCheck"][]=array();
                #參考資料來源:
                #array_keys=>http://php.net/manual/en/function.array-keys.php
                $checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
                unset($conf["variableCheck::checkArguments"]);

                #如果檢查參數失敗
                if($checkArguments["status"]=="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"]=$checkArguments;

                        #回傳結果
                        return $result;

                        }#if end

                #如果檢查不通過
                if($checkArguments["passed"]=="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"]=$checkArguments;

                        #回傳結果
                        return $result;

                        }#if end

                #檢查參數
                if( !isset($conf["rangeF"]["s"]) || !isset($conf["rangeF"]["e"])){

                        #不通過檢查,設定執行錯誤
                        $result["error"][]="參數 \$conf[\"rangeF\"][\"s\"] 與 \$conf[\"rangeF\"][\"s\"] 必填";

                        #設置執行失敗
                        $result["status"]="error";

                        #回傳結果
                        return $result;

                        }#if end

                #檢查參數
                if( !isset($conf["rangeT"]["s"]) || !isset($conf["rangeT"]["e"])){

                        #不通過檢查,設定執行錯誤
                        $result["error"][]="參數 \$conf[\"rangeT\"][\"s\"] 與 \$conf[\"rangeT\"][\"s\"] 必填";

                        #設置執行失敗
                        $result["status"]="error";

                        #回傳結果
                        return $result;

                        }#if end

                #初始化儲存左方對照表
                $rangeF=array();

                #建立左方對照表
                for($i=$conf["rangeF"]["s"];$i<=$conf["rangeF"]["e"];$i++){

                        $rangeF[]=$i;

                        }#for end

                #初始化儲存右方對照表
                $rangeT=array();

                #建立左方對照表
                for($i=$conf["rangeT"]["s"];$i<=$conf["rangeT"]["e"];$i++){

                        $rangeT[]=$i;

                        }#for end

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

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

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"]=$ftTable;

                        #回傳結果
                        return $result;

                }#if end

                #debug
                #var_dump($ftTable);exit;

                #取得左方對應右方的對照表
                $ftTable=$ftTable["content"];

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

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

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"]=$tfTable;

                        #回傳結果
                        return $result;

                }#if end

                #取得左方對應右方的對照表
                $tfTable=$tfTable["content"];

                #跑$conf["rangeF"]["e"]-$conf["rangeF"]["s"]+1次,修正轉換誤差.
                for($i=$conf["rangeF"]["s"];$i<=$conf["rangeF"]["e"];$i++){

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

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

                                #印出結果
                                var_dump($value2key);

                                #結束執行
                                exit;

                                }#if end

                        #var_dump($value2key);exit;

                        #fix 轉換誤差
                        $ft[$i]=$value2key["content"];

                        }#for end

                #取得左右一對一的對照表
                $result["content"]=$ft;

                #設置執行正常
                $result["status"]="true";

                #回傳結果
                return $result;

                }#function fixedKeyToValueReversed end

        /*
        #函式說明: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)
        #備註:
        #無.
        */
        public static function getExp(&$conf=array()){

                #初始化要回傳的結果
                $result=array();

                #取得當前執行的函數名稱
                $result["function"]=__FUNCTION__;

                #取得參數
                $result["argu"]=$conf;

                #如果 $conf 不為陣列
                if(gettype($conf)!="array"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"][]="\$conf變數須為陣列形態";

                        #如果傳入的參數為 null
                        if(is_null($conf)){

                                #設置執行錯誤訊息
                                $result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";

                                }#if end

                        #回傳結果
                        return $result;

                        }#if end

                #函式說明:
                #檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
                #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
                #$reuslt["error"],執行不正常結束的錯訊息陣列.
                #$result["function"],當前執行的函式名稱.
                #$result["argu"],設置給予的參數.
                #$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
                #$result[$shouldBeCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
                #$result[$shouldBeCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
                #$result[$shouldBeCheckedVarName]["error"],每個參數設定的錯誤訊息
                #$result["shouldNotBeEmpty"],不應該為空字串或控陣列的變數.
                #$result["argu"],字串陣列,目前輸入的參數名稱陣列.
                #$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
                #$result["notNeedVar"],字串陣列,多餘的參數名稱.
                #必填寫的參數:
                #$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
                $conf["variableCheck::checkArguments"]["varInput"]=&$conf;
                #$conf["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
                $conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
                #可以省略的參數:
                #$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
                #$conf["mustBeFilledVariableName"]=array();
                #$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object"); , null代表不指定變數形態.
                #$conf["mustBeFilledVariableType"]=array();
                #$conf["canBeEmptyString"],字串,必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true",可以為空字串.
                #$conf["canBeEmptyString"]="false";
                #$conf["canNotBeEmpty"],字串陣列,哪些必填參數的內容不得為空字串或空陣列,僅當$conf["canBeEmptyString"]為"true"時會生效.
                #$conf["canNotBeEmpty"]=array();
                #$conf["canBeEmpty"],字串陣列,哪些必填參數的內容可為空字串或空陣列,僅當$conf["canBeEmptyString"]為"false"時會生效.
                #$conf["canBeEmpty"]=array();
                #$conf["skipableVariableCanNotBeEmpty"],字串陣列,哪些可省略參數不可以為空字串或空陣列.
                $conf["variableCheck::checkArguments"]["skipableVariableCanNotBeEmpty"]=array("pow");
                #$conf["skipableVariableName"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
                $conf["variableCheck::checkArguments"]["skipableVariableName"]=array("pow");
                #$conf["skipableVariableType"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
                $conf["variableCheck::checkArguments"]["skipableVariableType"]=array("pow");
                #$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
                $conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array("1");
                #$conf["disallowAllSkipableVarIsEmpty"],字串,是否允許每個可省略參數都為空字串,預設為"true"允許,反之為"false".
                #$conf["disallowAllSkipableVarIsEmpty"]="";
                #$conf["disallowAllSkipableVarIsEmptyArray"],字串,是否允許每個可省略參數都為空陣列,預設為"true"允許,反之為"false".
                #$conf["disallowAllSkipableVarIsEmptyArray"]="";
                #$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
                #$conf["arrayCountEqualCheck"][]=array();
                #參考資料來源:
                #array_keys=>http://php.net/manual/en/function.array-keys.php
                $checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
                unset($conf["variableCheck::checkArguments"]);

                #如果檢查參數失敗
                if($checkArguments["status"]==="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤
                        $result["error"]=$checkArguments;

                        #回傳結果
                        return $result;

                        }#if end

                #如果檢查參數不通過
                if($checkArguments["passed"]==="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤
                        $result["error"]=$checkArguments;

                        #回傳結果
                        return $result;

                        }#if end

                #設置要回傳的內容為常數 e 的 $conf["pow"] 次方
                $result["content"]=exp($conf["pow"]);

                #設置執行正確
                $result["status"]="true";

                #回傳結果
                return $result;

                }#function getExp end

        /*
        #函式說明:
        #將16進位的16位數,轉換為小數點後到7位的gp表示方法.
        #回傳結果:
        #$result["status"],執行正常("true")與否("false").
        #$result["content"],回傳GPS或16進位的16位數GPS.
        #$reuslt["argu"],使用的參數.
        #必填參數:
        #$conf["rawGps"],字串,16進位的16位數,亦即gps的格式.
        $conf["rawGps"]="";
        #可省略參數:
        #$conf["reverse"],預設為"false","true"代表要將經緯度(121.1234567,23.1234567)轉換為16進位的16位數字.
        #$conf["reverse"]="true";
        #參考資料:
        #無.
        #備註:
        #無.
        */
        public static function raw2gps(&$conf=array()){

                #初始化要回傳的結果
                $result=array();

                #取得當前執行的函數名稱
                $result["function"]=__FUNCTION__;

                #如果沒有參數
                if(func_num_args()==0){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"]="函數".$result["function"]."需要參數";

                        #回傳結果
                        return $result;

                        }#if end

                #取得參數
                $result["argu"]=$conf;

                #如果 $conf 不為陣列
                if(gettype($conf)!=="array"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤訊息
                        $result["error"][]="\$conf變數須為陣列形態";

                        #如果傳入的參數為 null
                        if(is_null($conf)){

                                #設置執行錯誤訊息
                                $result["error"][]="\$conf變數不得為null,請檢查函數「".$result["function"]."」的參數設置有無正確!";

                                }#if end

                        #回傳結果
                        return $result;

                        }#if end

                #函式說明:
                #檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
                #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
                #$reuslt["error"],執行不正常結束的錯訊息陣列.
                #$result["function"],當前執行的函式名稱.
                #$result["argu"],設置給予的參數.
                #$result["passed"],識別要檢查的全體變數是否存在以及型態是否正確的變數,"true"代表檢查全部通過;"false"代表檢查不通過
                #$result[$shouldBeCheckedVarName]["varExist"],所檢查的變數是否存在,"false"代表不存在;"true"代表存在
                #$result[$shouldBeCheckedVarName]["varType"],所檢查的變數型態是否正確,"false"代表錯誤;"true"代表正確
                #$result[$shouldBeCheckedVarName]["error"],每個參數設定的錯誤訊息
                #$result["shouldNotBeEmpty"],不應該為空字串或控陣列的變數.
                #$result["argu"],字串陣列,目前輸入的參數名稱陣列.
                #$result["legalVarName"],字串陣列,合法可用的參數名稱陣列.
                #$result["notNeedVar"],字串陣列,多餘的參數名稱.
                #必填寫的參數:
                #$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
                $conf["variableCheck::checkArguments"]["varInput"]=&$conf;
                #$conf["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
                $conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
                #可以省略的參數:
                #$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
                $conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("rawGps");
                #$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object"); , null代表不指定變數形態.
                $conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string");
                #$conf["canBeEmptyString"],字串,必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true",可以為空字串.
                $conf["variableCheck::checkArguments"]["canBeEmptyString"]="false";
                #$conf["canNotBeEmpty"],字串陣列,哪些必填參數的內容不得為空字串或空陣列,僅當$conf["canBeEmptyString"]為"true"時會生效.
                #$conf["canNotBeEmpty"]=array();
                #$conf["canBeEmpty"],字串陣列,哪些必填參數的內容可為空字串或空陣列,僅當$conf["canBeEmptyString"]為"false"時會生效.
                #$conf["canBeEmpty"]=array();
                #$conf["skipableVariableCanNotBeEmpty"],字串陣列,哪些可省略參數不可以為空字串或空陣列.
                $conf["variableCheck::checkArguments"]["skipableVariableCanNotBeEmpty"]=array("reverse");
                #$conf["skipableVariableName"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
                $conf["variableCheck::checkArguments"]["skipableVariableName"]=array("reverse");
                #$conf["skipableVariableType"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
                $conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string");
                #$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
                $conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array("false");
                #$conf["disallowAllSkipableVarIsEmpty"],字串,是否允許每個可省略參數都為空字串,預設為"true"允許,反之為"false".
                #$conf["disallowAllSkipableVarIsEmpty"]="";
                #$conf["disallowAllSkipableVarIsEmptyArray"],字串,是否允許每個可省略參數都為空陣列,預設為"true"允許,反之為"false".
                #$conf["disallowAllSkipableVarIsEmptyArray"]="";
                #$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
                #$conf["arrayCountEqualCheck"][]=array();
                #參考資料來源:
                #array_keys=>http://php.net/manual/en/function.array-keys.php
                $checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
                unset($conf["variableCheck::checkArguments"]);

                #如果檢查參數失敗
                if($checkArguments["status"]==="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤
                        $result["error"]=$checkArguments;

                        #回傳結果
                        return $result;

                        }#if end

                #如果檢查參數不通過
                if($checkArguments["passed"]==="false"){

                        #設置執行失敗
                        $result["status"]="false";

                        #設置執行錯誤
                        $result["error"]=$checkArguments;

                        #回傳結果
                        return $result;

                        }#if end

                #如果要把經緯度變成16進位的16位數字
                if($conf["reverse"]==="true"){

                        #函式說明:
                        #將固定格式的字串分開,並回傳分開的結果。
                        #回傳結果:
                        #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
                        #$result["error"],錯誤訊息陣列
                        #$result["function"],當前執行的函數名稱.
                        #$result["argu"],使用的參數.
                        #$result["oriStr"],要分割的原始字串內容
                        #$result["dataArray"],爲分割好字串的陣列內容,$result["dataArray"][$i]爲第($i+1)段的內容。
                        #$result["dataCounts"],爲總共分成幾段
                        #$result["found"],是否有在$conf["stringIn"]找到$conf["spiltSymbol"],"true"代表有找到,"false"代表沒有找到.
                        #必填參數:
                        #$conf["stringIn"],字串,要處理的字串.
                        $conf["stringProcess::spiltString"]["stringIn"]=$conf["rawGps"];
                        #$conf["spiltSymbol"],字串,爲以哪個符號作爲分割.
                        $conf["stringProcess::spiltString"]["spiltSymbol"]=",";
                        #可省略參數:
                        #$conf["allowEmptyStr"],是否允許分割出來空字串,預設為"false"不允許;"true"代表允許.
                        $conf["allowEmptyStr"]="false";
                        $spiltString=stringProcess::spiltString($conf["stringProcess::spiltString"]);
                        unset($conf["stringProcess::spiltString"]);

                        #如果分割gps字串失敗
                        if($spiltString["status"]==="false"){

                                #設置執行失敗
                                $result["status"]="false";

                                #設置執行錯誤
                                $result["error"]=$spiltString;

                                #回傳結果
                                return $result;

                                }#if end

                        #如果分割gps字串時,沒有發現逗號.
                        if($spiltString["found"]==="false"){

                                #設置執行失敗
                                $result["status"]="false";

                                #設置執行錯誤
                                $result["error"]=$spiltString;

                                #回傳結果
                                return $result;

                                }#if end

                        #如果分割成不等於2段
                        if($spiltString["dataCounts"]!==2){

                                #設置執行失敗
                                $result["status"]="false";

                                #設置執行錯誤
                                $result["error"]=$spiltString;

                                #設置錯誤訊息
                                $result["error"][]="應該要分割出經度跟緯度";

                                #回傳結果
                                return $result;

                                }#if end

                        #取得緯度
                        $lat=$spiltString["dataArray"][0];

                        #取得經度
                        $lon=$spiltString["dataArray"][1];

                        #檢查經度格式 - start

                        #初始化經度檢查未通過
                        $lonOk=false;

                        #函式說明:
                        #將字串特定關鍵字與其前面的內容剔除
                        #回傳結果:
                        #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
                        #$result["error"],錯誤訊息陣列.
                        #$result["warning"],警告訊息鎮列.
                        #$result["founded"],有無找到定字串"true"代表有,"false"代表沒有.
                        #$result["function"],當前執行的函數名稱.
                        #$result["oriStr"],要處理的原始字串內容.
                        #$result["content"],處理好的的字串內容.
                        #必填參數:
                        $conf["stringProcess::delStrBeforeKeyWord"]["stringIn"]=$lon;#要處理的字串.
                        $conf["stringProcess::delStrBeforeKeyWord"]["keyWord"]=".";#特定字串.
                        $delStrBeforeKeyWord=stringProcess::delStrBeforeKeyWord($conf["stringProcess::delStrBeforeKeyWord"]);
                        unset($conf["stringProcess::delStrBeforeKeyWord"]);

                        #如果分割經度字串失敗
                        if($delStrBeforeKeyWord["status"]==="false"){

                                #設置執行失敗
                                $result["status"]="false";

                                #設置執行錯誤
                                $result["error"]=$delStrBeforeKeyWord;

                                #回傳結果
                                return $result;

                                }#if end

                        #如果分割經度字串時,沒有發現dot.
                        if($delStrBeforeKeyWord["founded"]==="false"){

                                #設置執行失敗
                                $result["status"]="false";

                                #設置執行錯誤
                                $result["error"]=$delStrBeforeKeyWord;

                                #回傳結果
                                return $result;

                                }#if end

                        #如果沒有小數點後七位
                        if(strlen($delStrBeforeKeyWord["content"])!==7){

                                #設置執行失敗
                                $result["status"]="false";

                                #設置執行錯誤
                                $result["error"]=$delStrBeforeKeyWord;

                                #設置執行錯誤
                                $result["error"][]="經度應該要包含小數點後7位.";

                                #回傳結果
                                return $result;

                                }#if end

                        #如果是西經
                        if($lon<0){

                                #轉正數加180
                                $lon=(-1)*$lon+180;

                                }#if end

                        #如果經度超過範圍
                        if($lon>360){

                                #設置執行失敗
                                $result["status"]="false";

                                #設置執行錯誤
                                $result["error"][]="經度不會大於180度";

                                #回傳結果
                                return $result;

                                }#if end

                        #檢查經度格式 - end

                        #檢查緯度格式 - start

                        #初始化經度檢查未通過
                        $lonOk=false;

                        #函式說明:
                        #將字串特定關鍵字與其前面的內容剔除
                        #回傳結果:
                        #$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
                        #$result["error"],錯誤訊息陣列.
                        #$result["warning"],警告訊息鎮列.
                        #$result["founded"],有無找到定字串"true"代表有,"false"代表沒有.
                        #$result["function"],當前執行的函數名稱.
                        #$result["oriStr"],要處理的原始字串內容.
                        #$result["content"],處理好的的字串內容.
                        #必填參數:
                        $conf["stringProcess::delStrBeforeKeyWord"]["stringIn"]=$lat;#要處理的字串.
                        $conf["stringProcess::delStrBeforeKeyWord"]["keyWord"]=".";#特定字串.
                        $delStrBeforeKeyWord=stringProcess::delStrBeforeKeyWord($conf["stringProcess::delStrBeforeKeyWord"]);
                        unset($conf["stringProcess::delStrBeforeKeyWord"]);

                        #如果分割緯度字串失敗
                        if($delStrBeforeKeyWord["status"]==="false"){

                                #設置執行失敗
                                $result["status"]="false";

                                #設置執行錯誤
                                $result["error"]=$delStrBeforeKeyWord;

                                #回傳結果
                                return $result;

                                }#if end

                        #如果分割緯度字串時,沒有發現dot.
                        if($delStrBeforeKeyWord["founded"]==="false"){

                                #設置執行失敗
                                $result["status"]="false";

                                #設置執行錯誤
                                $result["error"]=$delStrBeforeKeyWord;

                                #回傳結果
                                return $result;

                                }#if end

                        #如果沒有小數點後七位
                        if(strlen($delStrBeforeKeyWord["content"])!==7){

                                #設置執行失敗
                                $result["status"]="false";

                                #設置執行錯誤
                                $result["error"]=$delStrBeforeKeyWord;

                                #設置執行錯誤
                                $result["error"][]="緯度應該要包含小數點後7位.";

                                #回傳結果
                                return $result;

                                }#if end

                        #如果是南緯
                        if($lat<0){

                                #轉正數加180
                                $lat=(-1)*$lat+90;

                                }#if end

                        #如果緯度超過範圍
                        if($lat>180){

                                #設置執行失敗
                                $result["status"]="false";

                                #設置執行錯誤
                                $result["error"][]="緯度不會大於90度";

                                #回傳結果
                                return $result;

                                }#if end

                        #檢查緯度格式 - end

                        #取得16進位的緯度
                        $lat=sprintf("%08s",strtoupper(base_convert($lat*pow(10,7),10,16)));

                        #取得16進位的經度
                        $lon=sprintf("%08s",strtoupper(base_convert($lon*pow(10,7),10,16)));

                        #設置要回傳的16進位16位數字的經緯度
                        $result["content"]=$lat.$lon;

                        #設置執行正常
                        $result["status"]="true";

                        #回傳結果
                        return $result;

                }#if end

                #取得16進位緯度
                $lat=substr($conf["rawGps"],0,8);

                #取得16進位經度
                $lon=substr($conf["rawGps"],8,8);

                #取得10進位的經度
                $lon=base_convert($lon,16,10);

                #取得10進位的緯度
                $lat=base_convert($lat,16,10);

                #如果經度超過範圍
                if($lon>2*180*pow(10,7))
                {
                        #設置錯誤訊息
                        $result["error"][]="經度超過範圍";

                        #設置錯誤
                        $result["status"]="false";

                        #回傳結果
                        return $result;

                }#if end

                #如果緯度超過範圍
                if($lat>2*90*pow(10,7))
                {
                        #設置錯誤訊息
                        $result["error"][]="緯度超過範圍";

                        #設置錯誤
                        $result["status"]="false";

                        #回傳結果
                        return $result;

                }#if end

                #如果是西經
                if($lon>180*pow(10,7))
                {
                        $lon=-($lon-180*pow(10,7));

                }#if end

                #如果是南緯
                if($lat>90*pow(10,7))
                {
                        $lat=-($lat-90*pow(10,7));

                }#if end

                #設置要回傳的結果
                $result["content"]=$lat*pow(10,-7).",".$lon*pow(10,-7);

                #設置執行正常
                $result["status"]="true";

                #回傳結果
                return $result;

                }#function raw2gps

        }#class math end

?>