數組處理,計算ng數量

來源:互聯網
上載者:User
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);

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.