array(6) { [0]=> string(62) "../../dat/DIG/TestFunction/TS407/BED410-500A1/5306/NG/7020.csv" [1]=> string(64) "../../dat/DIG/TestFunction/TS407/BED410-500A1/5306/NG/7020_1.csv" [2]=> string(64) "../../dat/DIG/TestFunction/TS407/BED410-500A1/5306/NG/7020_2.csv" [3]=> string(64) "../../dat/DIG/TestFunction/TS407/BED410-500A1/5306/NG/7020_3.csv" [4]=> string(64) "../../dat/DIG/TestFunction/TS407/BED410-500A1/5306/NG/7020_4.csv" [5]=> string(65) "../../dat/DIG/TestFunction/TS407/BED410-500A1/5306/NG/7020_NG.csv"}
已知數組a的形式,如果把7020開頭的檔案看作一個檔案,求得這樣的結果:ts407,bed410-500a1,5306,ng對應數量為1.這要怎麼求?
回複討論(解決方案)
如果是這樣呢?
foreach (glob($datapath."/NG/*.csv") as $filename) {preg_match('/.+\/(\d+)/',$filename,$match);echo $value_lotno.'=>'.$match[1].'
';}
求得結果:
5106=>80015127=>72075127=>72075306=>70205306=>70205306=>70205306=>70205306=>70205306=>70205309=>71735309=>71735310=>71025310=>71025310=>72535310=>72535310=>74345310=>74345310=>74435310=>74435310=>75085310=>75085310=>75735310=>7573
如何把這個結果變成一個數組,像這樣的形式:
array('5106=>8001','5127=>7207','5306=>7020','5309=>7173','5310=>7102','5310=>7253','5310=>7434','5310=>7443','5310=>7508','5310=>7573');
$arr=array('5106=>8001','5127=>7207','5127=>7207','5306=>7020','5306=>7020','5306=>7020','5306=>7020','5306=>7020','5306=>7020','5309=>7173','5309=>7173','5310=>7102','5310=>7102','5310=>7253','5310=>7253','5310=>7434','5310=>7434','5310=>7443','5310=>7443','5310=>7508','5310=>7508','5310=>7573','5310=>7573',);echo "";print_r(array_values(array_unique($arr)));echo "
";/*Array( [0] => 5106=>8001 [1] => 5127=>7207 [2] => 5306=>7020 [3] => 5309=>7173 [4] => 5310=>7102 [5] => 5310=>7253 [6] => 5310=>7434 [7] => 5310=>7443 [8] => 5310=>7508 [9] => 5310=>7573)*/
$arr=array('5106=>8001','5127=>7207','5127=>7207','5306=>7020','5306=>7020','5306=>7020','5306=>7020','5306=>7020','5306=>7020','5309=>7173','5309=>7173','5310=>7102','5310=>7102','5310=>7253','5310=>7253','5310=>7434','5310=>7434','5310=>7443','5310=>7443','5310=>7508','5310=>7508','5310=>7573','5310=>7573',);echo "";print_r(array_values(array_unique($arr)));echo "
";/*Array( [0] => 5106=>8001 [1] => 5127=>7207 [2] => 5306=>7020 [3] => 5309=>7173 [4] => 5310=>7102 [5] => 5310=>7253 [6] => 5310=>7434 [7] => 5310=>7443 [8] => 5310=>7508 [9] => 5310=>7573)*/
不對吧。原來的格式不是數組啊,我是要把原來的格式變成數組啊。
你不都迴圈出來了嗎.....
echo $value_lotno.'=>'.$match[1].'
';
下面加上
$arr[]=$value_lotno.'=>'.$match[1];
這樣就行了
你不都迴圈出來了嗎.....
echo $value_lotno.'=>'.$match[1].'
';
下面加上
$arr[]=$value_lotno.'=>'.$match[1];
這樣就行了
是我的問題,應該放在迴圈外面print_r,但是這問題問的已經和我的本意相去甚遠了,我本來想問的是,如1#的路徑,把路徑最後的7020開頭的檔案都作為1個檔案來看,計算出ng檔案夾下的檔案數量為1,這個要怎麼求?
舉個例子來看!
舉個例子來看!
$datapath = '../../dat/DIG/TestFunction/'.$machine.'/'.$value_type.'/'.$value_lotno;//已求得var_dump(glob($datapath.'/NG/*.*', GLOB_BRACE));
得到如下結果:
array(1) { [0]=> string(62) "../../dat/DIG/TestFunction/TS407/BED410-500A1/5106/NG/8001.csv"}array(2) { [0]=> string(62) "../../dat/DIG/TestFunction/TS407/BED410-500A1/5127/NG/7207.csv" [1]=> string(65) "../../dat/DIG/TestFunction/TS407/BED410-500A1/5127/NG/7207_NG.csv"}array(0) {}array(0) {}array(6) { [0]=> string(62) "../../dat/DIG/TestFunction/TS407/BED410-500A1/5306/NG/7020.csv" [1]=> string(64) "../../dat/DIG/TestFunction/TS407/BED410-500A1/5306/NG/7020_1.csv" [2]=> string(64) "../../dat/DIG/TestFunction/TS407/BED410-500A1/5306/NG/7020_2.csv" [3]=> string(64) "../../dat/DIG/TestFunction/TS407/BED410-500A1/5306/NG/7020_3.csv" [4]=> string(64) "../../dat/DIG/TestFunction/TS407/BED410-500A1/5306/NG/7020_4.csv" [5]=> string(65) "../../dat/DIG/TestFunction/TS407/BED410-500A1/5306/NG/7020_NG.csv"}
想要得到的這些路徑下對應的NG的結果數量。(如果開頭都一樣的話則作為一個檔案)
$arr=array("../../dat/DIG/TestFunction/TS407/BED410-500A1/5306/NG/7020.csv","../../dat/DIG/TestFunction/TS407/BED410-500A1/5306/NG/7020_1.csv","../../dat/DIG/TestFunction/TS407/BED410-500A1/5306/NG/7020_2.csv","../../dat/DIG/TestFunction/TS407/BED410-500A1/5306/NG/7020_3.csv","../../dat/DIG/TestFunction/TS407/BED410-500A1/5306/NG/7020_4.csv","../../dat/DIG/TestFunction/TS407/BED410-500A1/5306/NG/7020_NG.csv","../../dat/DIG/TestFunction/TS407/BED410-500A1/5306/NG/7021_NG.csv",//添加測試);foreach($arr as $v){$tmp=explode('/',$v);$lastfile=array_pop($tmp);preg_match('/^(\d+)(\.|\_)/',$lastfile,$m);$arr_file[]=$m[1];}$count=count(array_unique($arr_file));echo $count;//2
$arr=array("../../dat/DIG/TestFunction/TS407/BED410-500A1/5306/NG/7020.csv","../../dat/DIG/TestFunction/TS407/BED410-500A1/5306/NG/7020_1.csv","../../dat/DIG/TestFunction/TS407/BED410-500A1/5306/NG/7020_2.csv","../../dat/DIG/TestFunction/TS407/BED410-500A1/5306/NG/7020_3.csv","../../dat/DIG/TestFunction/TS407/BED410-500A1/5306/NG/7020_4.csv","../../dat/DIG/TestFunction/TS407/BED410-500A1/5306/NG/7020_NG.csv","../../dat/DIG/TestFunction/TS407/BED410-500A1/5306/NG/7021_NG.csv",//添加測試);foreach($arr as $v){$tmp=explode('/',$v);$lastfile=array_pop($tmp);preg_match('/^(\d+)(\.|\_)/',$lastfile,$m);$arr_file[]=$m[1];}$count=count(array_unique($arr_file));echo $count;//2
如果有像7#的空數組這樣就不對了,變成了1.
唉,二維你就判斷一下就行了嘛
$all=array(array("../../dat/DIG/TestFunction/TS407/BED410-500A1/5106/NG/8001.csv"),array("../../dat/DIG/TestFunction/TS407/BED410-500A1/5127/NG/7207.csv","../../dat/DIG/TestFunction/TS407/BED410-500A1/5127/NG/7207_NG.csv",),array(),array(),array("../../dat/DIG/TestFunction/TS407/BED410-500A1/5306/NG/7020.csv","../../dat/DIG/TestFunction/TS407/BED410-500A1/5306/NG/7020_1.csv","../../dat/DIG/TestFunction/TS407/BED410-500A1/5306/NG/7020_2.csv","../../dat/DIG/TestFunction/TS407/BED410-500A1/5306/NG/7020_3.csv","../../dat/DIG/TestFunction/TS407/BED410-500A1/5306/NG/7020_4.csv","../../dat/DIG/TestFunction/TS407/BED410-500A1/5306/NG/7020_NG.csv","../../dat/DIG/TestFunction/TS407/BED410-500A1/5306/NG/7021_NG.csv",//添加測試));foreach($all as $arr){if(!$arr){continue;}foreach($arr as $v){$tmp=explode('/',$v);$lastfile=array_pop($tmp);preg_match('/^(\d+)(\.|\_)/',$lastfile,$m);$arr_file[]=$m[1];}}$count=count(array_unique($arr_file));echo $count;//4
唉,二維你就判斷一下就行了嘛
$all=array(array("../../dat/DIG/TestFunction/TS407/BED410-500A1/5106/NG/8001.csv"),array("../../dat/DIG/TestFunction/TS407/BED410-500A1/5127/NG/7207.csv","../../dat/DIG/TestFunction/TS407/BED410-500A1/5127/NG/7207_NG.csv",),array(),array(),array("../../dat/DIG/TestFunction/TS407/BED410-500A1/5306/NG/7020.csv","../../dat/DIG/TestFunction/TS407/BED410-500A1/5306/NG/7020_1.csv","../../dat/DIG/TestFunction/TS407/BED410-500A1/5306/NG/7020_2.csv","../../dat/DIG/TestFunction/TS407/BED410-500A1/5306/NG/7020_3.csv","../../dat/DIG/TestFunction/TS407/BED410-500A1/5306/NG/7020_4.csv","../../dat/DIG/TestFunction/TS407/BED410-500A1/5306/NG/7020_NG.csv","../../dat/DIG/TestFunction/TS407/BED410-500A1/5306/NG/7021_NG.csv",//添加測試));foreach($all as $arr){if(!$arr){continue;}foreach($arr as $v){$tmp=explode('/',$v);$lastfile=array_pop($tmp);preg_match('/^(\d+)(\.|\_)/',$lastfile,$m);$arr_file[]=$m[1];}}$count=count(array_unique($arr_file));echo $count;//4
我不要求總和,求分項的和:1,1,2
請問怎麼求?
我是醉了,能一次說完麼,哥
$count=count(array_unique($arr_file));
改為
$new=array_count_values($arr_file);