目次
ディスカッションへの返信 (解決策)

配列処理、ng数の計算

Jun 20, 2016 pm 12:56 PM

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].'<br />';							}
ログイン後にコピー

結果を取得します:
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 "<pre>";print_r(array_values(array_unique($arr)));echo "</pre>";/*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 "<pre>";print_r(array_values(array_unique($arr)));echo "</pre>";/*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].'<br />';
以下に追加します
$arr[]=$value_lotno.'=>'.$match[1];
以上です すべてループアウトではありませんか?....

echo $value_lotno.'=>'.$match[1].'<br />';

以下に

$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));
ログイン後にコピー
取得したいこれらのパスにある、対応する NG 結果の数。 (先頭が同じ場合は1つのファイルとして扱います)

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]=&gt;  string(62) &quot;../../dat/DIG/TestFunction/TS407/BED410-500A1/5306/NG/7020.csv&quot;  [1]=&gt;  string(64) &quot;../../dat/DIG/TestFunction/TS407/BED410-500A1/5306/NG/7020_1.csv&quot;  [2]=&gt;  string(64) &quot;../../dat/DIG/TestFunction/TS407/BED410-500A1/5306/NG/7020_2.csv&quot;  [3]=&gt;  string(64) &quot;../../dat/DIG/TestFunction/TS407/BED410-500A1/5306/NG/7020_3.csv&quot;  [4]=&gt;  string(64) &quot;../../dat/DIG/TestFunction/TS407/BED410-500A1/5306/NG/7020_4.csv&quot;  [5]=&gt;  string(65) &quot;../../dat/DIG/TestFunction/TS407/BED410-500A1/5306/NG/7020_NG.csv&quot;}
ログイン後にコピー



$arr=array(	&quot;../../dat/DIG/TestFunction/TS407/BED410-500A1/5306/NG/7020.csv&quot;,	&quot;../../dat/DIG/TestFunction/TS407/BED410-500A1/5306/NG/7020_1.csv&quot;,	&quot;../../dat/DIG/TestFunction/TS407/BED410-500A1/5306/NG/7020_2.csv&quot;,	&quot;../../dat/DIG/TestFunction/TS407/BED410-500A1/5306/NG/7020_3.csv&quot;,	&quot;../../dat/DIG/TestFunction/TS407/BED410-500A1/5306/NG/7020_4.csv&quot;,	&quot;../../dat/DIG/TestFunction/TS407/BED410-500A1/5306/NG/7020_NG.csv&quot;,	&quot;../../dat/DIG/TestFunction/TS407/BED410-500A1/5306/NG/7021_NG.csv&quot;,//添加测试);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 になります。

$arr=array(	&quot;../../dat/DIG/TestFunction/TS407/BED410-500A1/5306/NG/7020.csv&quot;,	&quot;../../dat/DIG/TestFunction/TS407/BED410-500A1/5306/NG/7020_1.csv&quot;,	&quot;../../dat/DIG/TestFunction/TS407/BED410-500A1/5306/NG/7020_2.csv&quot;,	&quot;../../dat/DIG/TestFunction/TS407/BED410-500A1/5306/NG/7020_3.csv&quot;,	&quot;../../dat/DIG/TestFunction/TS407/BED410-500A1/5306/NG/7020_4.csv&quot;,	&quot;../../dat/DIG/TestFunction/TS407/BED410-500A1/5306/NG/7020_NG.csv&quot;,	&quot;../../dat/DIG/TestFunction/TS407/BED410-500A1/5306/NG/7021_NG.csv&quot;,//添加测试);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
ログイン後にコピー
ログイン後にコピー
ああ、二次元かどうかで判断してください



ああ、二次元かどうかで判断してください ただ判断してください

$all=array(array(	&quot;../../dat/DIG/TestFunction/TS407/BED410-500A1/5106/NG/8001.csv&quot;),array(	&quot;../../dat/DIG/TestFunction/TS407/BED410-500A1/5127/NG/7207.csv&quot;,	&quot;../../dat/DIG/TestFunction/TS407/BED410-500A1/5127/NG/7207_NG.csv&quot;,),array(),array(),array(	&quot;../../dat/DIG/TestFunction/TS407/BED410-500A1/5306/NG/7020.csv&quot;,	&quot;../../dat/DIG/TestFunction/TS407/BED410-500A1/5306/NG/7020_1.csv&quot;,	&quot;../../dat/DIG/TestFunction/TS407/BED410-500A1/5306/NG/7020_2.csv&quot;,	&quot;../../dat/DIG/TestFunction/TS407/BED410-500A1/5306/NG/7020_3.csv&quot;,	&quot;../../dat/DIG/TestFunction/TS407/BED410-500A1/5306/NG/7020_4.csv&quot;,	&quot;../../dat/DIG/TestFunction/TS407/BED410-500A1/5306/NG/7020_NG.csv&quot;,	&quot;../../dat/DIG/TestFunction/TS407/BED410-500A1/5306/NG/7021_NG.csv&quot;,//添加测试));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
どうやって見つけますか?

$all=array(array(	&quot;../../dat/DIG/TestFunction/TS407/BED410-500A1/5106/NG/8001.csv&quot;),array(	&quot;../../dat/DIG/TestFunction/TS407/BED410-500A1/5127/NG/7207.csv&quot;,	&quot;../../dat/DIG/TestFunction/TS407/BED410-500A1/5127/NG/7207_NG.csv&quot;,),array(),array(),array(	&quot;../../dat/DIG/TestFunction/TS407/BED410-500A1/5306/NG/7020.csv&quot;,	&quot;../../dat/DIG/TestFunction/TS407/BED410-500A1/5306/NG/7020_1.csv&quot;,	&quot;../../dat/DIG/TestFunction/TS407/BED410-500A1/5306/NG/7020_2.csv&quot;,	&quot;../../dat/DIG/TestFunction/TS407/BED410-500A1/5306/NG/7020_3.csv&quot;,	&quot;../../dat/DIG/TestFunction/TS407/BED410-500A1/5306/NG/7020_4.csv&quot;,	&quot;../../dat/DIG/TestFunction/TS407/BED410-500A1/5306/NG/7020_NG.csv&quot;,	&quot;../../dat/DIG/TestFunction/TS407/BED410-500A1/5306/NG/7021_NG.csv&quot;,//添加测试));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
ログイン後にコピー
ログイン後にコピー

酔っているので、一度で終わらせてくれませんか、兄さん
$count=count(array_unique($arr_file));

$new=array_count_values($arr_file) に変更します);
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットな記事タグ

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

11ベストPHP URLショートナースクリプト(無料およびプレミアム) 11ベストPHP URLショートナースクリプト(無料およびプレミアム) Mar 03, 2025 am 10:49 AM

11ベストPHP URLショートナースクリプト(無料およびプレミアム)

Instagram APIの紹介 Instagram APIの紹介 Mar 02, 2025 am 09:32 AM

Instagram APIの紹介

Laravelでフラッシュセッションデータを使用します Laravelでフラッシュセッションデータを使用します Mar 12, 2025 pm 05:08 PM

Laravelでフラッシュセッションデータを使用します

Laravelテストでの簡略化されたHTTP応答のモッキング Laravelテストでの簡略化されたHTTP応答のモッキング Mar 12, 2025 pm 05:09 PM

Laravelテストでの簡略化されたHTTP応答のモッキング

PHPのカール:REST APIでPHPカール拡張機能を使用する方法 PHPのカール:REST APIでPHPカール拡張機能を使用する方法 Mar 14, 2025 am 11:42 AM

PHPのカール:REST APIでPHPカール拡張機能を使用する方法

LaravelのバックエンドでReactアプリを構築する:パート2、React LaravelのバックエンドでReactアプリを構築する:パート2、React Mar 04, 2025 am 09:33 AM

LaravelのバックエンドでReactアプリを構築する:パート2、React

Codecanyonで12の最高のPHPチャットスクリプト Codecanyonで12の最高のPHPチャットスクリプト Mar 13, 2025 pm 12:08 PM

Codecanyonで12の最高のPHPチャットスクリプト

Laravelの通知 Laravelの通知 Mar 04, 2025 am 09:22 AM

Laravelの通知

See all articles