Subversion Repositories php-qbpwcf

Rev

Rev 62 | Rev 239 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 62 Rev 226
Line 1... Line 1...
1
<?php
1
<?php
2
 
2
 
3
/*
3
/*
4
 
4
 
5
	QBPWCF, Quick Build PHP website Component base on Fedora Linux.
5
	QBPWCF, Quick Build PHP website Component base on Fedora Linux.
6
    Copyright (C) 2015~2025 Min-Jhin,Chen
6
    Copyright (C) 2014~2025 MIN ZHI, CHEN
7
 
7
 
8
    This file is part of QBPWCF.
8
    This file is part of QBPWCF.
9
 
9
 
10
    QBPWCF is free software: you can redistribute it and/or modify
10
    QBPWCF is free software: you can redistribute it and/or modify
11
    it under the terms of the GNU General Public License as published by
11
    it under the terms of the GNU General Public License as published by
Line 747... Line 747...
747
	#無.
747
	#無.
748
	#備註:
748
	#備註:
749
	#用array_diff()可快速得到結果
749
	#用array_diff()可快速得到結果
750
	*/
750
	*/
751
	public static function eraseRepeatedElement(&$conf){
751
	public static function eraseRepeatedElement(&$conf){
752
	
752
 
753
		#初始化要回傳的變數
753
		#初始化要回傳的變數
754
		$result=array();
754
		$result=array();
755
 
755
 
756
		#取得當前執行的函數名稱
756
		#取得當前執行的函數名稱
757
		$result["function"]=__FUNCTION__;
757
		$result["function"]=__FUNCTION__;
Line 775... Line 775...
775
 
775
 
776
			#回傳結果
776
			#回傳結果
777
			return $result;
777
			return $result;
778
 
778
 
779
			}#if end
779
			}#if end
780
			
780
 
781
		#取得參數
781
		#取得參數
782
		$result["argu"]=$conf;
782
		$result["argu"]=$conf;
783
			
783
 
784
		#檢查參數
784
		#檢查參數
785
		#函式說明:
785
		#函式說明:
786
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
786
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
787
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
787
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
788
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
788
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
Line 813... Line 813...
813
		#$conf["canBeEmpty"]=array();
813
		#$conf["canBeEmpty"]=array();
814
		#$conf["skipableVariableCanNotBeEmpty"],字串陣列,哪些可省略參數不可以為空字串或空陣列.
814
		#$conf["skipableVariableCanNotBeEmpty"],字串陣列,哪些可省略參數不可以為空字串或空陣列.
815
		#$conf["skipableVariableCanNotBeEmpty"]=array();
815
		#$conf["skipableVariableCanNotBeEmpty"]=array();
816
		#$conf["skipableVariableName"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
816
		#$conf["skipableVariableName"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
817
		#$conf["skipableVariableName"]=array();
817
		#$conf["skipableVariableName"]=array();
818
		#$conf["skipableVariableType"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double"); 
818
		#$conf["skipableVariableType"],陣列字串,爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
819
		#$conf["skipableVariableType"]=array();
819
		#$conf["skipableVariableType"]=array();
820
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
820
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
821
		#$conf["skipableVarDefaultValue"]=array("");
821
		#$conf["skipableVarDefaultValue"]=array("");
822
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
822
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
823
		#$conf["arrayCountEqualCheck"][]=array();
823
		#$conf["arrayCountEqualCheck"][]=array();
Line 825... Line 825...
825
		#array_keys=>http://php.net/manual/en/function.array-keys.php
825
		#array_keys=>http://php.net/manual/en/function.array-keys.php
826
		#建議:
826
		#建議:
827
		#增加可省略參數全部不能為空字串或空陣列的參數功能.
827
		#增加可省略參數全部不能為空字串或空陣列的參數功能.
828
		$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
828
		$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
829
		unset($conf["variableCheck::checkArguments"]);
829
		unset($conf["variableCheck::checkArguments"]);
830
		
830
 
831
		#如果檢查參數失敗
831
		#如果檢查參數失敗
832
		if($checkArguments["status"]==="false"){
832
		if($checkArguments["status"]==="false"){
833
			
833
 
834
			#設置執行失敗
834
			#設置執行失敗
835
			$result["status"]="false";
835
			$result["status"]="false";
836
			
836
 
837
			#設置執行錯誤訊息
837
			#設置執行錯誤訊息
838
			$result["error"]=$checkArguments;
838
			$result["error"]=$checkArguments;
839
			
839
 
840
			#回傳結果
840
			#回傳結果
841
			return $result;
841
			return $result;
842
			
842
 
843
			}#if end
843
			}#if end
844
			
844
 
845
		#如果參數檢查不過
845
		#如果參數檢查不過
846
		if($checkArguments["passed"]==="false"){
846
		if($checkArguments["passed"]==="false"){
847
			
847
 
848
			#設置執行失敗
848
			#設置執行失敗
849
			$result["status"]="false";
849
			$result["status"]="false";
850
			
850
 
851
			#設置執行錯誤訊息
851
			#設置執行錯誤訊息
852
			$result["error"]=$checkArguments;
852
			$result["error"]=$checkArguments;
853
			
853
 
854
			#回傳結果
854
			#回傳結果
855
			return $result;
855
			return $result;
856
			
856
 
857
			}#if end
857
			}#if end
858
		
858
 
859
		#剔除掉特定元素的陣列,使用原來陣列的key來儲存.
859
		#剔除掉特定元素的陣列,使用原來陣列的key來儲存.
860
		$result["content"]["byName"]=array();
860
		$result["content"]["byName"]=array();
861
		
861
 
862
		#剔除掉特定元素的陣列,使用從0開始的整數key來儲存.
862
		#剔除掉特定元素的陣列,使用從0開始的整數key來儲存.
863
		$result["content"]["byNumber"]=array();
863
		$result["content"]["byNumber"]=array();
864
			
864
 
865
		#如果arrayB沒有內容
865
		#如果arrayB沒有內容
866
		if(count($conf["arrayB"])===0){
866
		if(count($conf["arrayB"])===0){
867
		
867
 
868
			#直接將arrayA的內容放進去
868
			#直接將arrayA的內容放進去
869
			$result["content"]["byName"]=$conf["arrayA"];
869
			$result["content"]["byName"]=$conf["arrayA"];
870
			
870
 
871
			#針對每隔陣列a
871
			#針對每隔陣列a
872
			foreach($conf["arrayA"] as $val){
872
			foreach($conf["arrayA"] as $val){
873
				
873
 
874
				$result["content"]["byNumber"][]=$val;
874
				$result["content"]["byNumber"][]=$val;
875
			
875
 
876
				}
876
				}
877
			
877
 
878
			}#if end
878
			}#if end
879
		
879
 
880
		else{
880
		else{
881
			#針對 $conf["arrayA"] 的每個元素
881
			#針對 $conf["arrayA"] 的每個元素
882
			foreach($conf["arrayA"] as $aAk => $aAv){
882
			foreach($conf["arrayA"] as $aAk => $aAv){
883
			
883
 
884
				#針對 $conf["arrayB"] 的每個元素
884
				#針對 $conf["arrayB"] 的每個元素
885
				foreach($conf["arrayB"] as $aBk => $aBv){
885
				foreach($conf["arrayB"] as $aBk => $aBv){
886
				
886
 
887
					/*
887
					/*
888
					#debug
888
					#debug
889
					echo "\$aAV:".$aAv.PHP_EOL;
889
					echo "\$aAV:".$aAv.PHP_EOL;
890
					echo "\$aBV:".$aBv.PHP_EOL;
890
					echo "\$aBV:".$aBv.PHP_EOL;
891
					echo "(\$aAv===\$aBv):".($aAv===$aBv).PHP_EOL;
891
					echo "(\$aAv===\$aBv):".($aAv===$aBv).PHP_EOL;
892
					*/
892
					*/
893
				
893
 
894
					#如果arrayA的元素數值存在於陣列arrayB
894
					#如果arrayA的元素數值存在於陣列arrayB
895
					if($aAv===$aBv){
895
					if($aAv===$aBv){
896
					
896
 
897
						/*
897
						/*
898
						#debug
898
						#debug
899
						echo "(\$aAv===\$aBv):".($aAv===$aBv).PHP_EOL;
899
						echo "(\$aAv===\$aBv):".($aAv===$aBv).PHP_EOL;
900
						*/
900
						*/
901
					
901
 
902
						#移除重複的元素
902
						#移除重複的元素
903
						#unset($conf["arrayA"][$aAk]);
903
						#unset($conf["arrayA"][$aAk]);
904
						#unset($conf["arrayB"][$aBk]);
904
						#unset($conf["arrayB"][$aBk]);
905
					
905
 
906
						/*
906
						/*
907
						#debug
907
						#debug
908
						echo $aAv." repeated, ignore it.".PHP_EOL;
908
						echo $aAv." repeated, ignore it.".PHP_EOL;
909
						*/
909
						*/
910
					
910
 
911
						#跳過
911
						#跳過
912
						continue 2;
912
						continue 2;
913
					
913
 
914
						}#if end
914
						}#if end
915
						
915
 
916
					/*
916
					/*
917
					#debug
917
					#debug
918
					echo "(\$aAv!==\$aBv):".($aAv!==$aBv).PHP_EOL;
918
					echo "(\$aAv!==\$aBv):".($aAv!==$aBv).PHP_EOL;
919
					echo "add ".$aAv." ".PHP_EOL;
919
					echo "add ".$aAv." ".PHP_EOL;
920
					*/
920
					*/
921
						
921
 
922
					#如果還沒比較到最後一個
922
					#如果還沒比較到最後一個
923
					#參考資料:
923
					#參考資料:
924
					#array_key_last => https://stackoverflow.com/questions/1070244/how-to-determine-the-first-and-last-iteration-in-a-foreach-loop
924
					#array_key_last => https://stackoverflow.com/questions/1070244/how-to-determine-the-first-and-last-iteration-in-a-foreach-loop
925
					if($conf["arrayB"][$aBk]!==$conf["arrayB"][array_key_last($conf["arrayB"])]){
925
					if($conf["arrayB"][$aBk]!==$conf["arrayB"][array_key_last($conf["arrayB"])]){
926
					
926
 
927
						/*
927
						/*
928
						#debug
928
						#debug
929
						echo "not last, continue...".PHP_EOL;
929
						echo "not last, continue...".PHP_EOL;
930
						*/
930
						*/
931
					
931
 
932
						#繼續比
932
						#繼續比
933
						continue;
933
						continue;
934
						
934
 
935
						}#if end					
935
						}#if end
936
						
936
 
937
					#以key取得未重複的元素
937
					#以key取得未重複的元素
938
					$result["content"]["byName"][$aAk]=$aAv;	
938
					$result["content"]["byName"][$aAk]=$aAv;
939
				
939
 
940
					#如果IP未重複
940
					#如果IP未重複
941
					if(!in_array($aAv,$result["content"]["byNumber"])){
941
					if(!in_array($aAv,$result["content"]["byNumber"])){
942
					
942
 
943
						#重新排列未重複的元素
943
						#重新排列未重複的元素
944
						$result["content"]["byNumber"][]=$aAv;
944
						$result["content"]["byNumber"][]=$aAv;
945
					
945
 
946
						}#if end
946
						}#if end
947
						
947
 
948
					}#foreach end
948
					}#foreach end
949
			
949
 
950
				}#foreach end
950
				}#foreach end
951
				
951
 
952
			}#else end
952
			}#else end
953
						
953
 
954
		#設置有剩下未重複的元素
954
		#設置有剩下未重複的元素
955
		$result["empty"]="false";	
955
		$result["empty"]="false";
956
			
956
 
957
		#如果沒有剩下未重複的元素
957
		#如果沒有剩下未重複的元素
958
		if($result["content"]["byName"]===array()){
958
		if($result["content"]["byName"]===array()){
959
		
959
 
960
			#設置沒有剩下未重複的元素
960
			#設置沒有剩下未重複的元素
961
			$result["empty"]="true";
961
			$result["empty"]="true";
962
		
962
 
963
			}#if end
963
			}#if end
964
	
964
 
965
		#設置執行正常
965
		#設置執行正常
966
		$result["status"]="true";
966
		$result["status"]="true";
967
	
967
 
968
		#回傳結果
968
		#回傳結果
969
		return $result;
969
		return $result;
970
	
970
 
971
		}#function eraseRepeatedElement end
971
		}#function eraseRepeatedElement end
972
 
972
 
973
	/*
973
	/*
974
	#函式說明:
974
	#函式說明:
975
	#將陣列中特定元素剔除,並重新按照順序排序
975
	#將陣列中特定元素剔除,並重新按照順序排序
Line 1664... Line 1664...
1664
 
1664
 
1665
			#回傳結果
1665
			#回傳結果
1666
			return $result;
1666
			return $result;
1667
 
1667
 
1668
			}#if end
1668
			}#if end
1669
		
1669
 
1670
		#針對要合併的每組一維陣列
1670
		#針對要合併的每組一維陣列
1671
		foreach($conf["inputArray"] as $array){
1671
		foreach($conf["inputArray"] as $array){
1672
 
1672
 
1673
			#如果要合併的元素不是陣列
1673
			#如果要合併的元素不是陣列
1674
			if(gettype($array)!=="array"){
1674
			if(gettype($array)!=="array"){
1675
			
1675
 
1676
				#設置執行失敗
1676
				#設置執行失敗
1677
				$result["status"]="false";
1677
				$result["status"]="false";
1678
 
1678
 
1679
				#設置錯誤訊息
1679
				#設置錯誤訊息
1680
				$result["error"]=$checkArguments;
1680
				$result["error"]=$checkArguments;
1681
 
1681
 
1682
				#回傳結果
1682
				#回傳結果
1683
				return $result;
1683
				return $result;
1684
			
1684
 
1685
				}#if end
1685
				}#if end
1686
 
1686
 
1687
			#針對該陣列中的每個元素
1687
			#針對該陣列中的每個元素
1688
			foreach($array as $arrayAdded){
1688
			foreach($array as $arrayAdded){
1689
 
1689
 
1690
				#如果不允許重複的內容
1690
				#如果不允許重複的內容
1691
				if($conf["allowRepeat"]==="false"){
1691
				if($conf["allowRepeat"]==="false"){
1692
				
1692
 
1693
					#如果要寬鬆的視為相異
1693
					#如果要寬鬆的視為相異
1694
					if($conf["looseDiff"]==="true"){
1694
					if($conf["looseDiff"]==="true"){
1695
					
1695
 
1696
						#如果有重複了
1696
						#如果有重複了
1697
						if(in_array($arrayAdded,$result["content"])){
1697
						if(in_array($arrayAdded,$result["content"])){
1698
						
1698
 
1699
							#跳到下一個
1699
							#跳到下一個
1700
							continue;
1700
							continue;
1701
						
1701
 
1702
							}#if end
1702
							}#if end
1703
					
1703
 
1704
						}#if end
1704
						}#if end
1705
				
1705
 
1706
					#反之,代表不能寬鬆的認為相異
1706
					#反之,代表不能寬鬆的認為相異
1707
					else{
1707
					else{
1708
					
1708
 
1709
						#針對每個既有的元素
1709
						#針對每個既有的元素
1710
						foreach($result["content"] as $key=>$val){
1710
						foreach($result["content"] as $key=>$val){
1711
						
1711
 
1712
							#取得元素的參考
1712
							#取得元素的參考
1713
							$valExist=&$val;
1713
							$valExist=&$val;
1714
							
1714
 
1715
							#取得要檢查是否重複的元素
1715
							#取得要檢查是否重複的元素
1716
							$valAdded=&$arrayAdded;
1716
							$valAdded=&$arrayAdded;
1717
							
1717
 
1718
							#如果既有元素跟要檢查是否重複的元素均是陣列
1718
							#如果既有元素跟要檢查是否重複的元素均是陣列
1719
							if( (gettype($valExist)==="array") && (gettype($valAdded)==="array") ){
1719
							if( (gettype($valExist)==="array") && (gettype($valAdded)==="array") ){
1720
							
1720
 
1721
								#預設不知道是否有差異
1721
								#預設不知道是否有差異
1722
								$varExistAndValAddedIsDiff="?";
1722
								$varExistAndValAddedIsDiff="?";
1723
							
1723
 
1724
								#針對每個已存在元素
1724
								#針對每個已存在元素
1725
								foreach($valExist as $veKey => $veVal){
1725
								foreach($valExist as $veKey => $veVal){
1726
								
1726
 
1727
									#若存在 key 相同的地方
1727
									#若存在 key 相同的地方
1728
									if(isset($valAdded[$veKey])){
1728
									if(isset($valAdded[$veKey])){
1729
									
1729
 
1730
										#如果 $veVal 跟 $valAdded[$veKey] 兩者都是陣列
1730
										#如果 $veVal 跟 $valAdded[$veKey] 兩者都是陣列
1731
										if( gettype($veVal)==="array" && gettype($valAdded[$veKey])==="array" ){
1731
										if( gettype($veVal)==="array" && gettype($valAdded[$veKey])==="array" ){
1732
										
1732
 
1733
											#用來判斷是否 陣列 $veVal 跟 $valAdded[$veKey] 有相異的元素數量
1733
											#用來判斷是否 陣列 $veVal 跟 $valAdded[$veKey] 有相異的元素數量
1734
											$sameCount=count($veVal);
1734
											$sameCount=count($veVal);
1735
											
1735
 
1736
											#如果 陣列 $valAdded 的元素數量比較多
1736
											#如果 陣列 $valAdded 的元素數量比較多
1737
											if($sameCount<count($valAdded[$veKey])){
1737
											if($sameCount<count($valAdded[$veKey])){
1738
											
1738
 
1739
												#更新 用來判斷是否 陣列 $veVal 跟 $valAdded[$veKey] 有相異的元素數量
1739
												#更新 用來判斷是否 陣列 $veVal 跟 $valAdded[$veKey] 有相異的元素數量
1740
												$sameCount=count($valAdded[$veKey]);
1740
												$sameCount=count($valAdded[$veKey]);
1741
											
1741
 
1742
												}#if end
1742
												}#if end
1743
										
1743
 
1744
											#遞回處理
1744
											#遞回處理
1745
											#函式說明:
1745
											#函式說明:
1746
											#將多個一維陣列串聯起來,key從0開始排序.
1746
											#將多個一維陣列串聯起來,key從0開始排序.
1747
											#回傳的結果:
1747
											#回傳的結果:
1748
											#$result["status"],"true"表執行正常,"false"代表執行不正常.
1748
											#$result["status"],"true"表執行正常,"false"代表執行不正常.
Line 1762... Line 1762...
1762
											#無.
1762
											#無.
1763
											#備註:
1763
											#備註:
1764
											#無.
1764
											#無.
1765
											$mergeArray=arrays::mergeArray($conf["arrays::mergeArray"]);
1765
											$mergeArray=arrays::mergeArray($conf["arrays::mergeArray"]);
1766
											unset($conf["arrays::mergeArray"]);
1766
											unset($conf["arrays::mergeArray"]);
1767
										
1767
 
1768
											#如果執行失敗
1768
											#如果執行失敗
1769
											if($mergeArray["status"]==="false"){
1769
											if($mergeArray["status"]==="false"){
1770
											
1770
 
1771
												#設置執行失敗
1771
												#設置執行失敗
1772
												$result["status"]="false";
1772
												$result["status"]="false";
1773
 
1773
 
1774
												#設置錯誤訊息
1774
												#設置錯誤訊息
1775
												$result["error"]=$mergeArray;
1775
												$result["error"]=$mergeArray;
1776
 
1776
 
1777
												#回傳結果
1777
												#回傳結果
1778
												return $result;
1778
												return $result;
1779
											
1779
 
1780
												}#if end
1780
												}#if end
1781
											
1781
 
1782
											#如果 合併好元素數量大於 陣列 $veVal 跟 $valAdded[$veKey] 有相異的元素數量
1782
											#如果 合併好元素數量大於 陣列 $veVal 跟 $valAdded[$veKey] 有相異的元素數量
1783
											if( count($mergeArray["content"]) > $sameCount ){
1783
											if( count($mergeArray["content"]) > $sameCount ){
1784
											
1784
 
1785
												#代表 $veVal 跟 $valAdded[$veKey] 是有差異的陣列
1785
												#代表 $veVal 跟 $valAdded[$veKey] 是有差異的陣列
1786
											
1786
 
1787
												#設置有相異
1787
												#設置有相異
1788
												$varExistAndValAddedIsDiff="true";
1788
												$varExistAndValAddedIsDiff="true";
1789
												
1789
 
1790
												#跳出 foreach
1790
												#跳出 foreach
1791
												break;
1791
												break;
1792
											
1792
 
1793
												}#if end 
1793
												}#if end
1794
											
1794
 
1795
											}#if end
1795
											}#if end
1796
										
1796
 
1797
										#反之
1797
										#反之
1798
										else{
1798
										else{
1799
										
1799
 
1800
											#若 key 相同的地方,其 val 有相異
1800
											#若 key 相同的地方,其 val 有相異
1801
											if($veVal!==$valAdded[$veKey]){
1801
											if($veVal!==$valAdded[$veKey]){
1802
												
1802
 
1803
												#設置有相異
1803
												#設置有相異
1804
												$varExistAndValAddedIsDiff="true";
1804
												$varExistAndValAddedIsDiff="true";
1805
												
1805
 
1806
												#跳出 foreach
1806
												#跳出 foreach
1807
												break;
1807
												break;
1808
											
1808
 
1809
												}#if end
1809
												}#if end
1810
										
1810
 
1811
											}#else end
1811
											}#else end
1812
											
1812
 
1813
										}#if end
1813
										}#if end
1814
										
1814
 
1815
									#反之沒有  key 相同的地方
1815
									#反之沒有  key 相同的地方
1816
									else{
1816
									else{
1817
									
1817
 
1818
										#設置有相異
1818
										#設置有相異
1819
										$varExistAndValAddedIsDiff="true";
1819
										$varExistAndValAddedIsDiff="true";
1820
										
1820
 
1821
										#跳出 foreach
1821
										#跳出 foreach
1822
										break;
1822
										break;
1823
										
1823
 
1824
										}#else end
1824
										}#else end
1825
										
1825
 
1826
									}#foreach end
1826
									}#foreach end
1827
								
1827
 
1828
								#如果沒有找到有相異的
1828
								#如果沒有找到有相異的
1829
								if($varExistAndValAddedIsDiff==="?"){
1829
								if($varExistAndValAddedIsDiff==="?"){
1830
								
1830
 
1831
									#設置無相異
1831
									#設置無相異
1832
									$varExistAndValAddedIsDiff="false";
1832
									$varExistAndValAddedIsDiff="false";
1833
									
1833
 
1834
									}#if end
1834
									}#if end
1835
								
1835
 
1836
								#如果無相異
1836
								#如果無相異
1837
								if($varExistAndValAddedIsDiff==="false"){
1837
								if($varExistAndValAddedIsDiff==="false"){
1838
								
1838
 
1839
									#跳到下一個
1839
									#跳到下一個
1840
									continue 3 ;
1840
									continue 3 ;
1841
								
1841
 
1842
									}#if end
1842
									}#if end
1843
								
1843
 
1844
								}#if end
1844
								}#if end
1845
							
1845
 
1846
							#反之不是都為陣列,
1846
							#反之不是都為陣列,
1847
							else{
1847
							else{
1848
							
1848
 
1849
								#若為同形態,且數值相同
1849
								#若為同形態,且數值相同
1850
								if($valExist===$valAdded){
1850
								if($valExist===$valAdded){
1851
								
1851
 
1852
									#跳到下一個
1852
									#跳到下一個
1853
									continue 2;
1853
									continue 2;
1854
									
1854
 
1855
									}#if end
1855
									}#if end
1856
							
1856
 
1857
								}#else end
1857
								}#else end
1858
							
1858
 
1859
							}#foreach end
1859
							}#foreach end
1860
							
1860
 
1861
						#執行到這邊代表既有的元素與要新增的元素是相異的
1861
						#執行到這邊代表既有的元素與要新增的元素是相異的
1862
						
1862
 
1863
						#將之合併到 $result 陣列裡面
1863
						#將之合併到 $result 陣列裡面
1864
						$result["content"][]=$arrayAdded;
1864
						$result["content"][]=$arrayAdded;
1865
						
1865
 
1866
						}#else end
1866
						}#else end
1867
						
1867
 
1868
					}#if end
1868
					}#if end
1869
 
1869
 
1870
				#反之
1870
				#反之
1871
				else{
1871
				else{
1872
 
1872
 
1873
					#將之合併到 $result 陣列裡面
1873
					#將之合併到 $result 陣列裡面
1874
					$result["content"][]=$arrayAdded;
1874
					$result["content"][]=$arrayAdded;
1875
 
1875
 
1876
					}#else end 
1876
					}#else end
1877
 
1877
 
1878
				}#foreach end
1878
				}#foreach end
1879
 
1879
 
1880
			}#foreach end
1880
			}#foreach end
1881
 
1881
 
Line 1905... Line 1905...
1905
	#無.
1905
	#無.
1906
	#備註:
1906
	#備註:
1907
	#無.
1907
	#無.
1908
	*/
1908
	*/
1909
	public static function unique(&$conf){
1909
	public static function unique(&$conf){
1910
	
1910
 
1911
		#初始化要回傳的結果
1911
		#初始化要回傳的結果
1912
		$result=array();
1912
		$result=array();
1913
 
1913
 
1914
		#初始話要回傳的陣列
1914
		#初始話要回傳的陣列
1915
		$result["content"]=array();
1915
		$result["content"]=array();
Line 2017... Line 2017...
2017
 
2017
 
2018
			#回傳結果
2018
			#回傳結果
2019
			return $result;
2019
			return $result;
2020
 
2020
 
2021
			}#if end
2021
			}#if end
2022
	
2022
 
2023
		#初始化給 arrays::mergeArray 用的 inputArray 參數
2023
		#初始化給 arrays::mergeArray 用的 inputArray 參數
2024
		$paramsOfInputArrayOfArraysMergeArray=array();
2024
		$paramsOfInputArrayOfArraysMergeArray=array();
2025
	
2025
 
2026
		#針對每個元素 
2026
		#針對每個元素
2027
		foreach($conf["inputArray"] as $ele){
2027
		foreach($conf["inputArray"] as $ele){
2028
		
2028
 
2029
			#包成陣列並儲存起來
2029
			#包成陣列並儲存起來
2030
			$paramsOfInputArrayOfArraysMergeArray[]=array($ele);
2030
			$paramsOfInputArrayOfArraysMergeArray[]=array($ele);
2031
		
2031
 
2032
			}#foreach end
2032
			}#foreach end
2033
		
2033
 
2034
		#函式說明:
2034
		#函式說明:
2035
		#將多個一維陣列串聯起來,key從0開始排序.
2035
		#將多個一維陣列串聯起來,key從0開始排序.
2036
		#回傳的結果:
2036
		#回傳的結果:
2037
		#$result["status"],"true"表執行正常,"false"代表執行不正常.
2037
		#$result["status"],"true"表執行正常,"false"代表執行不正常.
2038
		#$result["error"],錯誤訊息陣列.
2038
		#$result["error"],錯誤訊息陣列.
Line 2051... Line 2051...
2051
		#無.
2051
		#無.
2052
		#備註:
2052
		#備註:
2053
		#無.
2053
		#無.
2054
		$mergeArray=arrays::mergeArray($conf["arrays::mergeArray"]);
2054
		$mergeArray=arrays::mergeArray($conf["arrays::mergeArray"]);
2055
		unset($conf["arrays::mergeArray"]);
2055
		unset($conf["arrays::mergeArray"]);
2056
	
2056
 
2057
		#debug
2057
		#debug
2058
		#var_dump(__LINE__,$mergeArray);
2058
		#var_dump(__LINE__,$mergeArray);
2059
	
2059
 
2060
		#如果執行失敗
2060
		#如果執行失敗
2061
		if($mergeArray["status"]==="false"){
2061
		if($mergeArray["status"]==="false"){
2062
 
2062
 
2063
			#設置執行失敗
2063
			#設置執行失敗
2064
			$result["status"]="false";
2064
			$result["status"]="false";
Line 2068... Line 2068...
2068
 
2068
 
2069
			#回傳結果
2069
			#回傳結果
2070
			return $result;
2070
			return $result;
2071
 
2071
 
2072
			}#if end
2072
			}#if end
2073
			
2073
 
2074
		#設置執行後得到的不重複陣列結果
2074
		#設置執行後得到的不重複陣列結果
2075
		$result["content"]=$mergeArray["content"];
2075
		$result["content"]=$mergeArray["content"];
2076
		
2076
 
2077
		#設置執行正常
2077
		#設置執行正常
2078
		$result["status"]="true";
2078
		$result["status"]="true";
2079
		
2079
 
2080
		#回傳結果
2080
		#回傳結果
2081
		return $result;
2081
		return $result;
2082
	
2082
 
2083
		}#function unique end
2083
		}#function unique end
2084
 
2084
 
2085
	/*
2085
	/*
2086
	#函式說明:
2086
	#函式說明:
2087
	#將多個多維陣列串聯起來,key從0開始排序.
2087
	#將多個多維陣列串聯起來,key從0開始排序.
Line 2103... Line 2103...
2103
	#無.
2103
	#無.
2104
	#備註:
2104
	#備註:
2105
	#無.
2105
	#無.
2106
	*/
2106
	*/
2107
	public static function mergeMultiDimensionArray(&$conf){
2107
	public static function mergeMultiDimensionArray(&$conf){
2108
	
2108
 
2109
		#初始化要回傳的結果
2109
		#初始化要回傳的結果
2110
		$result=array();
2110
		$result=array();
2111
 
2111
 
2112
		#初始話要回傳的陣列
2112
		#初始話要回傳的陣列
2113
		$result["content"]=array();
2113
		$result["content"]=array();
Line 2137... Line 2137...
2137
 
2137
 
2138
			}#if end
2138
			}#if end
2139
 
2139
 
2140
		#儲存使用的參數
2140
		#儲存使用的參數
2141
		$result["argu"]=$conf;
2141
		$result["argu"]=$conf;
2142
	
2142
 
2143
		#檢查參數
2143
		#檢查參數
2144
		#函式說明:
2144
		#函式說明:
2145
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
2145
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
2146
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
2146
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
2147
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
2147
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
Line 2215... Line 2215...
2215
 
2215
 
2216
			#回傳結果
2216
			#回傳結果
2217
			return $result;
2217
			return $result;
2218
 
2218
 
2219
			}#if end
2219
			}#if end
2220
			
2220
 
2221
		#針對每組一維陣列
2221
		#針對每組一維陣列
2222
		foreach($conf["inputArray"] as $array){
2222
		foreach($conf["inputArray"] as $array){
2223
 
2223
 
2224
			#如果是空陣列
2224
			#如果是空陣列
2225
			if(empty($array)){
2225
			if(empty($array)){
2226
			
2226
 
2227
				#跳過之
2227
				#跳過之
2228
				continue;
2228
				continue;
2229
			
2229
 
2230
				}#if end
2230
				}#if end
2231
 
2231
 
2232
			#針對該一維陣列中的每個元素
2232
			#針對該一維陣列中的每個元素
2233
			foreach($array as $arrayAdded){
2233
			foreach($array as $arrayAdded){
2234
 
2234
 
2235
				#如果不允許重複的內容
2235
				#如果不允許重複的內容
2236
				if($conf["allowRepeat"]==="false"){
2236
				if($conf["allowRepeat"]==="false"){
2237
				
2237
 
2238
					#如果有指定 key 階層
2238
					#如果有指定 key 階層
2239
					if(isset($conf["equalKeyStruc"])){
2239
					if(isset($conf["equalKeyStruc"])){
2240
					
2240
 
2241
						#初始化儲存用來比對是否相符的變數
2241
						#初始化儲存用來比對是否相符的變數
2242
						$valInArray=$arrayAdded;
2242
						$valInArray=$arrayAdded;
2243
						
2243
 
2244
						#debug
2244
						#debug
2245
						#var_dump(__LINE__,$valInArray);
2245
						#var_dump(__LINE__,$valInArray);
2246
					
2246
 
2247
						#針對每個 key 階層
2247
						#針對每個 key 階層
2248
						foreach($conf["equalKeyStruc"] as $keyLayer){
2248
						foreach($conf["equalKeyStruc"] as $keyLayer){
2249
							
2249
 
2250
							#如果沒有該階層
2250
							#如果沒有該階層
2251
							if(!isset($valInArray[$keyLayer])){
2251
							if(!isset($valInArray[$keyLayer])){
2252
							
2252
 
2253
								#換看下個元素
2253
								#換看下個元素
2254
								continue 2;
2254
								continue 2;
2255
								
2255
 
2256
								}#if end
2256
								}#if end
2257
							
2257
 
2258
							#取得對應key的內容
2258
							#取得對應key的內容
2259
							$valInArray=$valInArray[$keyLayer];
2259
							$valInArray=$valInArray[$keyLayer];
2260
						
2260
 
2261
							}#foreach end
2261
							}#foreach end
2262
						
2262
 
2263
						#預設要新增
2263
						#預設要新增
2264
						$add=true;
2264
						$add=true;
2265
						
2265
 
2266
						#針對已經合併好的陣列中的每個元素
2266
						#針對已經合併好的陣列中的每個元素
2267
						foreach($result["content"] as $index => $val){
2267
						foreach($result["content"] as $index => $val){
2268
						
2268
 
2269
							#針對每個 key 階層
2269
							#針對每個 key 階層
2270
							foreach($conf["equalKeyStruc"] as $keyLayer){
2270
							foreach($conf["equalKeyStruc"] as $keyLayer){
2271
							
2271
 
2272
								#取得對應key的內容
2272
								#取得對應key的內容
2273
								$val=$val[$keyLayer];
2273
								$val=$val[$keyLayer];
2274
							
2274
 
2275
								}#foreach end
2275
								}#foreach end
2276
								
2276
 
2277
							#如果遇到新的相同內容
2277
							#如果遇到新的相同內容
2278
							if($val===$valInArray){
2278
							if($val===$valInArray){
2279
							
2279
 
2280
								#用新的取代舊的
2280
								#用新的取代舊的
2281
								$result["content"][$index]=$array;
2281
								$result["content"][$index]=$array;
2282
							
2282
 
2283
								#設置不用新增
2283
								#設置不用新增
2284
								$add=false;
2284
								$add=false;
2285
							
2285
 
2286
								}#if end
2286
								}#if end
2287
							
2287
 
2288
							}#foreach end
2288
							}#foreach end
2289
						
2289
 
2290
						#如果要新增
2290
						#如果要新增
2291
						if($add){
2291
						if($add){
2292
						
2292
 
2293
							#新增之
2293
							#新增之
2294
							$result["content"][]=$arrayAdded;
2294
							$result["content"][]=$arrayAdded;
2295
							
2295
 
2296
							#debug
2296
							#debug
2297
							#var_dump(__LINE__,$result["content"]);
2297
							#var_dump(__LINE__,$result["content"]);
2298
							
2298
 
2299
							#跳到下一個
2299
							#跳到下一個
2300
							continue;
2300
							continue;
2301
						
2301
 
2302
							}#if end						
2302
							}#if end
2303
					
2303
 
2304
						}#if end
2304
						}#if end
2305
				
2305
 
2306
					#反之如果有重複了
2306
					#反之如果有重複了
2307
					else if(in_array($arrayAdded,$result["content"])){
2307
					else if(in_array($arrayAdded,$result["content"])){
2308
					
2308
 
2309
						#跳到下一個
2309
						#跳到下一個
2310
						continue;
2310
						continue;
2311
					
2311
 
2312
						}#if end
2312
						}#if end
2313
				
2313
 
2314
					}#if end
2314
					}#if end
2315
 
2315
 
2316
				#將之合併到 $result 陣列裡面
2316
				#將之合併到 $result 陣列裡面
2317
				$result["content"][]=$arrayAdded;
2317
				$result["content"][]=$arrayAdded;
2318
 
2318
 
Line 2322... Line 2322...
2322
 
2322
 
2323
		#設置執行正常
2323
		#設置執行正常
2324
		$result["status"]="true";
2324
		$result["status"]="true";
2325
 
2325
 
2326
		#回傳結果
2326
		#回傳結果
2327
		return $result;		
2327
		return $result;
2328
	
2328
 
2329
		}#function mergeMultiDimensionArray end
2329
		}#function mergeMultiDimensionArray end
2330
 
2330
 
2331
	/*
2331
	/*
2332
	#函式說明:
2332
	#函式說明:
2333
	#透過多個擁有一樣數量元素的一維陣列,透過指定的連接字串,組成一組同樣數量的一維陣列。
2333
	#透過多個擁有一樣數量元素的一維陣列,透過指定的連接字串,組成一組同樣數量的一維陣列。
Line 2777... Line 2777...
2777
	#無.
2777
	#無.
2778
	#備註:
2778
	#備註:
2779
	#無.
2779
	#無.
2780
	*/
2780
	*/
2781
	public static function stringToArray(&$conf){
2781
	public static function stringToArray(&$conf){
2782
	
2782
 
2783
		#初始化要回傳的變數
2783
		#初始化要回傳的變數
2784
		$result=array();
2784
		$result=array();
2785
 
2785
 
2786
		#初始化當前執行的函數名稱
2786
		#初始化當前執行的函數名稱
2787
		$result["funciton"]=__FUNCTION__;
2787
		$result["funciton"]=__FUNCTION__;
Line 2808... Line 2808...
2808
 
2808
 
2809
			}#if end
2809
			}#if end
2810
 
2810
 
2811
		#取得使用的參數
2811
		#取得使用的參數
2812
		$result["argu"]=$conf;
2812
		$result["argu"]=$conf;
2813
	
2813
 
2814
		#檢查參數
2814
		#檢查參數
2815
		#函式說明:
2815
		#函式說明:
2816
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
2816
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容。
2817
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
2817
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
2818
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
2818
		#$reuslt["error"],執行不正常結束的錯訊息陣列.
Line 2827... Line 2827...
2827
		#必填寫的參數:
2827
		#必填寫的參數:
2828
		#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
2828
		#$conf["varInput"],陣列變數,要檢查的陣列變數,請在要檢查的參數前面加上&,這樣變動的結果才能被套用。
2829
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
2829
		$conf["variableCheck::checkArguments"]["varInput"]=&$conf;
2830
		#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
2830
		#$conf["mustBeFilledVariableName"],爲必填參數的變數名稱陣列,形態爲陣列變數,元素數量需要跟"mustBeFilledVariableType"參數的元素數量一致,例如: $conf["mustBeFilledVariableName"] = array("id","account","password");
2831
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("inputStr");
2831
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableName"]=array("inputStr");
2832
		#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object"); 
2832
		#$conf["mustBeFilledVariableType"],爲必填參數的變數陣列應該爲何種變數形態,形態爲陣列,元素數量需要跟"mustBeFilledVariableName"參數的元素數量一致,例如: $conf["mustBeFilledVariableType"] = array("string",integer,"double","resource","object");
2833
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string");
2833
		$conf["variableCheck::checkArguments"]["mustBeFilledVariableType"]=array("string");
2834
		#$conf["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
2834
		#$conf["referenceVarKey"],字串,$conf參數後面的key值,用於移除不要的參考陣列.
2835
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
2835
		$conf["variableCheck::checkArguments"]["referenceVarKey"]="variableCheck::checkArguments";
2836
		#可以省略的參數:
2836
		#可以省略的參數:
2837
		#$conf["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true",可以為空字串.
2837
		#$conf["canBeEmptyString"],必填變數內容如果是空字串就不能算是有設置的話,請設為"false",預設爲"true",可以為空字串.
2838
		#$conf["canBeEmptyString"]="false";
2838
		#$conf["canBeEmptyString"]="false";
2839
		#$conf["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
2839
		#$conf["skipableVariableName"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableName"] = array("id","account","password");
2840
		$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("spiltSymbol");
2840
		$conf["variableCheck::checkArguments"]["skipableVariableName"]=array("spiltSymbol");
2841
		#$conf["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double"); 
2841
		#$conf["skipableVariableType"],爲可省略參數的變數名稱陣列,形態爲陣列變數,例如: $conf["skipableVariableType"] = array("string",integer,"double");
2842
		$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string");
2842
		$conf["variableCheck::checkArguments"]["skipableVariableType"]=array("string");
2843
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
2843
		#$conf["skipableVarDefaultValue"],字串陣列,每個不存在的可省略變數要初始化為什麼,null與代表不指定,若預設值是參數之一,請將$conf["mustBeFilledVar"]改成"\$conf["\mustBeFilledVar\"]".
2844
		$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array(",");
2844
		$conf["variableCheck::checkArguments"]["skipableVarDefaultValue"]=array(",");
2845
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
2845
		#$conf["arrayCountEqualCheck"],字串陣列,為檢查哪些陣列參數的元素數量要一樣,$conf["arrayCountEqualCheck"][$i]=array()為第$i組key為哪些的變數其元素數量要相等.
2846
		#$conf["arrayCountEqualCheck"][]=array();
2846
		#$conf["arrayCountEqualCheck"][]=array();
Line 2849... Line 2849...
2849
		$checkResult=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
2849
		$checkResult=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
2850
		unset($conf["variableCheck::checkArguments"]);
2850
		unset($conf["variableCheck::checkArguments"]);
2851
 
2851
 
2852
		#如果檢查有誤
2852
		#如果檢查有誤
2853
		if($checkResult["status"]=="false"){
2853
		if($checkResult["status"]=="false"){
2854
			
2854
 
2855
			#設置錯誤識別
2855
			#設置錯誤識別
2856
			$result["status"]="false";
2856
			$result["status"]="false";
2857
			
2857
 
2858
			#設置錯誤訊息
2858
			#設置錯誤訊息
2859
			$result["error"]=$checkResult;
2859
			$result["error"]=$checkResult;
2860
			
2860
 
2861
			#回傳結果
2861
			#回傳結果
2862
			return $result;
2862
			return $result;
2863
			
2863
 
2864
			}#if end
2864
			}#if end
2865
		
2865
 
2866
		#如果檢查不通過
2866
		#如果檢查不通過
2867
		if($checkResult["passed"]=="false"){
2867
		if($checkResult["passed"]=="false"){
2868
			
2868
 
2869
			#設置錯誤識別
2869
			#設置錯誤識別
2870
			$result["status"]="false";
2870
			$result["status"]="false";
2871
			
2871
 
2872
			#設置錯誤訊息
2872
			#設置錯誤訊息
2873
			$result["error"]=$checkResult;
2873
			$result["error"]=$checkResult;
2874
			
2874
 
2875
			#回傳結果
2875
			#回傳結果
2876
			return $result;
2876
			return $result;
2877
			
2877
 
2878
			}#if end
2878
			}#if end
2879
			
2879
 
2880
		#函式說明:
2880
		#函式說明:
2881
		#將固定格式的字串分開,並回傳分開的結果。
2881
		#將固定格式的字串分開,並回傳分開的結果。
2882
		#回傳結果:
2882
		#回傳結果:
2883
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
2883
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
2884
		#$result["error"],錯誤訊息陣列
2884
		#$result["error"],錯誤訊息陣列
Line 2894... Line 2894...
2894
		#可省略參數:
2894
		#可省略參數:
2895
		#$conf["allowEmptyStr"],是否允許分割出來空字串,預設為"false"不允許;"true"代表允許.
2895
		#$conf["allowEmptyStr"],是否允許分割出來空字串,預設為"false"不允許;"true"代表允許.
2896
		$conf["stringProcess::spiltString"]["allowEmptyStr"]="false";
2896
		$conf["stringProcess::spiltString"]["allowEmptyStr"]="false";
2897
		$spiltString=stringProcess::spiltString($conf["stringProcess::spiltString"]);
2897
		$spiltString=stringProcess::spiltString($conf["stringProcess::spiltString"]);
2898
		unset($conf["stringProcess::spiltString"]);
2898
		unset($conf["stringProcess::spiltString"]);
2899
	
2899
 
2900
		#如果分割字串失敗
2900
		#如果分割字串失敗
2901
		if($spiltString["status"]==="false"){
2901
		if($spiltString["status"]==="false"){
2902
			
2902
 
2903
			#設置錯誤識別
2903
			#設置錯誤識別
2904
			$result["status"]="false";
2904
			$result["status"]="false";
2905
			
2905
 
2906
			#設置錯誤訊息
2906
			#設置錯誤訊息
2907
			$result["error"]=$spiltString;
2907
			$result["error"]=$spiltString;
2908
			
2908
 
2909
			#回傳結果
2909
			#回傳結果
2910
			return $result;
2910
			return $result;
2911
			
2911
 
2912
			}#if end
2912
			}#if end
2913
			
2913
 
2914
		#取得分割好的字串陣列
2914
		#取得分割好的字串陣列
2915
		$result["content"]=$spiltString["dataArray"];
2915
		$result["content"]=$spiltString["dataArray"];
2916
		
2916
 
2917
		#設置執行正常
2917
		#設置執行正常
2918
		$result["status"]="true";
2918
		$result["status"]="true";
2919
	
2919
 
2920
		#回傳結果
2920
		#回傳結果
2921
		return $result;
2921
		return $result;
2922
	
2922
 
2923
		}#function stringToArray end
2923
		}#function stringToArray end
2924
	
2924
 
2925
	/*
2925
	/*
2926
	#函式說明:
2926
	#函式說明:
2927
	#將一維陣列轉換為用特定符號間隔的字串,ex:array("1","2","3") to "a;b;c;".
2927
	#將一維陣列轉換為用特定符號間隔的字串,ex:array("1","2","3") to "a;b;c;".
2928
	#回傳的結果:
2928
	#回傳的結果:
2929
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
2929
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
Line 2976... Line 2976...
2976
 
2976
 
2977
			}#if end
2977
			}#if end
2978
 
2978
 
2979
		#取得使用的參數
2979
		#取得使用的參數
2980
		$result["argu"]=$conf;
2980
		$result["argu"]=$conf;
2981
		
2981
 
2982
		#函式說明:
2982
		#函式說明:
2983
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容.
2983
		#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容.
2984
		#回傳結果:
2984
		#回傳結果:
2985
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
2985
		#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
2986
		#$result["error"],執行不正常結束的錯訊息陣列.
2986
		#$result["error"],執行不正常結束的錯訊息陣列.
Line 3031... Line 3031...
3031
		#array_keys=>http://php.net/manual/en/function.array-keys.php
3031
		#array_keys=>http://php.net/manual/en/function.array-keys.php
3032
		#備註:
3032
		#備註:
3033
		#無.
3033
		#無.
3034
		$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
3034
		$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
3035
		unset($conf["variableCheck::checkArguments"]);
3035
		unset($conf["variableCheck::checkArguments"]);
3036
		
3036
 
3037
		#如果執行失敗
3037
		#如果執行失敗
3038
		if($checkArguments["status"]==="false"){
3038
		if($checkArguments["status"]==="false"){
3039
		
3039
 
3040
			#設置執行錯誤的識別
3040
			#設置執行錯誤的識別
3041
			$result["status"]="false";
3041
			$result["status"]="false";
3042
 
3042
 
3043
			#設置錯誤訊息
3043
			#設置錯誤訊息
3044
			$result["error"]=$checkArguments;
3044
			$result["error"]=$checkArguments;
3045
 
3045
 
3046
			#回傳結果
3046
			#回傳結果
3047
			return $result;
3047
			return $result;
3048
		
3048
 
3049
			}#if end
3049
			}#if end
3050
			
3050
 
3051
		#如果檢查不通過
3051
		#如果檢查不通過
3052
		if($checkArguments["passed"]==="false"){
3052
		if($checkArguments["passed"]==="false"){
3053
		
3053
 
3054
			#設置執行錯誤的識別
3054
			#設置執行錯誤的識別
3055
			$result["status"]="false";
3055
			$result["status"]="false";
3056
 
3056
 
3057
			#設置錯誤訊息
3057
			#設置錯誤訊息
3058
			$result["error"]=$checkArguments;
3058
			$result["error"]=$checkArguments;
3059
 
3059
 
3060
			#回傳結果
3060
			#回傳結果
3061
			return $result;
3061
			return $result;
3062
		
3062
 
3063
			}#if end
3063
			}#if end
3064
		
3064
 
3065
		#初始化 $result["content"]
3065
		#初始化 $result["content"]
3066
		$result["content"]="";
3066
		$result["content"]="";
3067
 
3067
 
3068
		#如果開頭就要放置分割的字串
3068
		#如果開頭就要放置分割的字串
3069
		if($conf["spiltSymbolAtStart"]==="true"){
3069
		if($conf["spiltSymbolAtStart"]==="true"){
3070
		
3070
 
3071
			#串接分割的字串
3071
			#串接分割的字串
3072
			$result["content"]=$result["content"].$conf["spiltSymbol"];
3072
			$result["content"]=$result["content"].$conf["spiltSymbol"];
3073
		
3073
 
3074
			}#if end
3074
			}#if end
3075
 
3075
 
3076
		#紀錄總共有幾個變數
3076
		#紀錄總共有幾個變數
3077
		$Tcount=count($conf["inputArray"]);
3077
		$Tcount=count($conf["inputArray"]);
3078
 
3078
 
Line 3085... Line 3085...
3085
			#計數
3085
			#計數
3086
			$count++;
3086
			$count++;
3087
 
3087
 
3088
			#如果要串接的內容不為字串
3088
			#如果要串接的內容不為字串
3089
			if(gettype($elementValue)!=="string"){
3089
			if(gettype($elementValue)!=="string"){
3090
			
3090
 
3091
				#設置錯誤識別
3091
				#設置錯誤識別
3092
				$result["status"]="false";
3092
				$result["status"]="false";
3093
 
3093
 
3094
				#設置錯誤訊息
3094
				#設置錯誤訊息
3095
				$result["error"][]="要串接的內容須為字串";
3095
				$result["error"][]="要串接的內容須為字串";
3096
 
3096
 
3097
				#設置錯誤訊息
3097
				#設置錯誤訊息
3098
				$result["error"][]=$elementValue;
3098
				$result["error"][]=$elementValue;
3099
				
3099
 
3100
				#設置錯誤訊息
3100
				#設置錯誤訊息
3101
				$result["error"][]="wrong type is ".gettype($elementValue);
3101
				$result["error"][]="wrong type is ".gettype($elementValue);
3102
 
3102
 
3103
				#回傳結果
3103
				#回傳結果
3104
				return $result;
3104
				return $result;
3105
			
3105
 
3106
				}#if end
3106
				}#if end
3107
 
3107
 
3108
			#如果是最後一個
3108
			#如果是最後一個
3109
			if($count===$Tcount && $conf["skipEnd"]==="true"){
3109
			if($count===$Tcount && $conf["skipEnd"]==="true"){
3110
 
3110
 
Line 4048... Line 4048...
4048
 
4048
 
4049
				#如果切出的長度還不足
4049
				#如果切出的長度還不足
4050
				if($conf["length"]>count($result["content"]["get"])){
4050
				if($conf["length"]>count($result["content"]["get"])){
4051
 
4051
 
4052
					#儲存切割出來的元素
4052
					#儲存切割出來的元素
4053
					$result["content"]["get"][]=$val;				
4053
					$result["content"]["get"][]=$val;
4054
 
4054
 
4055
					}#if end
4055
					}#if end
4056
 
4056
 
4057
				#反之切割出來的長度已經足夠了
4057
				#反之切割出來的長度已經足夠了
4058
				else{
4058
				else{
Line 4064... Line 4064...
4064
 
4064
 
4065
				}#if end
4065
				}#if end
4066
 
4066
 
4067
			#反之沒到要切割的位置
4067
			#反之沒到要切割的位置
4068
			else{
4068
			else{
4069
				
4069
 
4070
				#儲存剩下來的右方陣列
4070
				#儲存剩下來的右方陣列
4071
				$result["content"]["leftL"][]=$val;
4071
				$result["content"]["leftL"][]=$val;
4072
 
4072
 
4073
				}#else end
4073
				}#else end
4074
 
4074
 
4075
			}#foreach end
4075
			}#foreach end
4076
	
4076
 
4077
		#設置執行正常
4077
		#設置執行正常
4078
		$result["status"]="true";
4078
		$result["status"]="true";
4079
 
4079
 
4080
		#回傳結果
4080
		#回傳結果
4081
		return $result;
4081
		return $result;
4082
 
4082
 
4083
		}#function split end
4083
		}#function split end
4084
		
4084
 
4085
	/*
4085
	/*
4086
	#函式說明:
4086
	#函式說明:
4087
	#將既有的一維陣列變成二維陣列,新增指定或相同的欄位資訊.
4087
	#將既有的一維陣列變成二維陣列,新增指定或相同的欄位資訊.
4088
	#回傳結果:
4088
	#回傳結果:
4089
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
4089
	#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
Line 4102... Line 4102...
4102
	#無.
4102
	#無.
4103
	#備註:
4103
	#備註:
4104
	#無.
4104
	#無.
4105
	*/
4105
	*/
4106
	public static function addColumn(&$conf){
4106
	public static function addColumn(&$conf){
4107
	
4107
 
4108
		#初始化要回傳的結果
4108
		#初始化要回傳的結果
4109
		$result=array();
4109
		$result=array();
4110
 
4110
 
4111
		#取得當前執行的函數名稱
4111
		#取得當前執行的函數名稱
4112
		$result["function"]=__FUNCTION__;
4112
		$result["function"]=__FUNCTION__;
Line 4224... Line 4224...
4224
 
4224
 
4225
			#回傳結果
4225
			#回傳結果
4226
			return $result;
4226
			return $result;
4227
 
4227
 
4228
			}#if end
4228
			}#if end
4229
			
4229
 
4230
		#初始化要回傳的二維陣列內容
4230
		#初始化要回傳的二維陣列內容
4231
		$result["content"]=array(array());
4231
		$result["content"]=array(array());
4232
	
4232
 
4233
		#針對每個要處理的既有一維陣列變數
4233
		#針對每個要處理的既有一維陣列變數
4234
		foreach($conf["array"] as $index => $firstEle){
4234
		foreach($conf["array"] as $index => $firstEle){
4235
		
4235
 
4236
			#如果存在新的欄位指定內容
4236
			#如果存在新的欄位指定內容
4237
			if(isset($conf["newArray"][$index])){
4237
			if(isset($conf["newArray"][$index])){
4238
			
4238
 
4239
				#設置新的欄位內容
4239
				#設置新的欄位內容
4240
				$secondEle=$conf["newArray"][$index];
4240
				$secondEle=$conf["newArray"][$index];
4241
			
4241
 
4242
				}#if end
4242
				}#if end
4243
			
4243
 
4244
			#反之
4244
			#反之
4245
			else{
4245
			else{
4246
			
4246
 
4247
				#設置新的欄位內容為第一個新的元素
4247
				#設置新的欄位內容為第一個新的元素
4248
				$secondEle=$conf["newArray"][0];
4248
				$secondEle=$conf["newArray"][0];
4249
			
4249
 
4250
				}#else end
4250
				}#else end
4251
		
4251
 
4252
			#設置新的欄位內容
4252
			#設置新的欄位內容
4253
			$row=array($firstEle,$secondEle);
4253
			$row=array($firstEle,$secondEle);
4254
		
4254
 
4255
			#儲存新的欄位內容
4255
			#儲存新的欄位內容
4256
			$result["content"][]=$row;
4256
			$result["content"][]=$row;
4257
		
4257
 
4258
			}#foreach end
4258
			}#foreach end
4259
	
4259
 
4260
		#設置執行正常
4260
		#設置執行正常
4261
		$result["status"]="true";
4261
		$result["status"]="true";
4262
		
4262
 
4263
		#回傳結果
4263
		#回傳結果
4264
		return $result;
4264
		return $result;
4265
	
4265
 
4266
		}#function addColumn end
4266
		}#function addColumn end
4267
 
4267
 
4268
		/*
4268
		/*
4269
		#函式說明:
4269
		#函式說明:
4270
		#將陣列的key資訊取出,以方便使用.
4270
		#將陣列的key資訊取出,以方便使用.
Line 4285... Line 4285...
4285
		#無.
4285
		#無.
4286
		#備註:
4286
		#備註:
4287
		#無.
4287
		#無.
4288
		*/
4288
		*/
4289
		public static function inspectKey(&$conf){
4289
		public static function inspectKey(&$conf){
4290
		
4290
 
4291
			#初始化要回傳的結果
4291
			#初始化要回傳的結果
4292
			$result=array();
4292
			$result=array();
4293
 
4293
 
4294
			#取得當前執行的函數名稱
4294
			#取得當前執行的函數名稱
4295
			$result["function"]=__FUNCTION__;
4295
			$result["function"]=__FUNCTION__;
Line 4330... Line 4330...
4330
 
4330
 
4331
				#回傳結果
4331
				#回傳結果
4332
				return $result;
4332
				return $result;
4333
 
4333
 
4334
				}#if end
4334
				}#if end
4335
				
4335
 
4336
			#檢查參數
4336
			#檢查參數
4337
			#函式說明:
4337
			#函式說明:
4338
			#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容.
4338
			#檢查必填與可省略的參數,可省略參數可指定預設要給與什麼數值內容.
4339
			#回傳結果:
4339
			#回傳結果:
4340
			#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
4340
			#$result["status"],執行是否正常,"true"代表正常,"false"代表不正常.
Line 4386... Line 4386...
4386
			#array_keys=>http://php.net/manual/en/function.array-keys.php
4386
			#array_keys=>http://php.net/manual/en/function.array-keys.php
4387
			#備註:
4387
			#備註:
4388
			#無.
4388
			#無.
4389
			$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
4389
			$checkArguments=variableCheck::checkArguments($conf["variableCheck::checkArguments"]);
4390
			unset($conf["variableCheck::checkArguments"]);
4390
			unset($conf["variableCheck::checkArguments"]);
4391
		
4391
 
4392
			#若執行失敗
4392
			#若執行失敗
4393
			if($checkArguments["status"]==="false"){
4393
			if($checkArguments["status"]==="false"){
4394
			
4394
 
4395
				#設置執行失敗
4395
				#設置執行失敗
4396
				$result["status"]="false";
4396
				$result["status"]="false";
4397
 
4397
 
4398
				#設置執行錯誤訊息
4398
				#設置執行錯誤訊息
4399
				$result["error"]=$checkArguments;
4399
				$result["error"]=$checkArguments;
4400
 
4400
 
4401
				#回傳結果
4401
				#回傳結果
4402
				return $result;
4402
				return $result;
4403
			
4403
 
4404
				}#if end
4404
				}#if end
4405
		
4405
 
4406
			#若檢查不通過
4406
			#若檢查不通過
4407
			if($checkArguments["passed"]==="false"){
4407
			if($checkArguments["passed"]==="false"){
4408
			
4408
 
4409
				#設置執行失敗
4409
				#設置執行失敗
4410
				$result["status"]="false";
4410
				$result["status"]="false";
4411
 
4411
 
4412
				#設置執行錯誤訊息
4412
				#設置執行錯誤訊息
4413
				$result["error"]=$checkArguments;
4413
				$result["error"]=$checkArguments;
4414
 
4414
 
4415
				#回傳結果
4415
				#回傳結果
4416
				return $result;
4416
				return $result;
4417
			
4417
 
4418
				}#if end
4418
				}#if end
4419
				
4419
 
4420
			#針對每個元素
4420
			#針對每個元素
4421
			foreach($conf["array"] as $arrayKey => $arrayVal){
4421
			foreach($conf["array"] as $arrayKey => $arrayVal){
4422
			
4422
 
4423
				#儲存 array key
4423
				#儲存 array key
4424
				$result["content"]["key"][]=$arrayKey;
4424
				$result["content"]["key"][]=$arrayKey;
4425
				
4425
 
4426
				#儲存 array value
4426
				#儲存 array value
4427
				$result["content"]["val"][]=$arrayVal;
4427
				$result["content"]["val"][]=$arrayVal;
4428
				
4428
 
4429
				}#foreach end
4429
				}#foreach end
4430
		
4430
 
4431
			#取得陣列的元素數量
4431
			#取得陣列的元素數量
4432
			$result["count"]=count($result["content"]["key"]);
4432
			$result["count"]=count($result["content"]["key"]);
4433
		
4433
 
4434
			#設置執行正常
4434
			#設置執行正常
4435
			$result["status"]="true";
4435
			$result["status"]="true";
4436
		
4436
 
4437
			#回傳結果
4437
			#回傳結果
4438
			return $result;
4438
			return $result;
4439
		
4439
 
4440
			}#function inspectKey end
4440
			}#function inspectKey end
4441
 
4441
 
4442
	}#class arrays end
4442
	}#class arrays end
4443
 
4443
 
4444
?>
4444
?>