ホームページ >バックエンド開発 >PHPチュートリアル >配列内の対応する関係を見つける

配列内の対応する関係を見つける

WBOY
WBOYオリジナル
2016-06-23 14:18:141281ブラウズ

この投稿は、lazygc520 によって最終編集されました: 2013-07-03 12:12:16

数组1:Array(    [0] => Array        (            [cust_no] => 237033AW0A            [lotno] => 3207            [lotno_count] => 360        ))数组2:Array([SU13061301033] => Array        (            [0] => Array                (                    [0] => 2013-06-19 09:00:00                    [1] => X02B                    [2] => 237033AW0A                    [3] => 15                    [4] => 14                    [5] => 210                )        )[SU13061301032] => Array        (            [0] => Array                (                    [0] => 2013-06-19 09:00:00                    [1] => X02B                    [2] => 237033AW0A                    [3] => 15                    [4] => 17                    [5] => 255                )        )[SU13061301037] => Array        (            [0] => Array                (                    [0] => 2013-06-19 09:00:00                    [1] => X11Q                    [2] => 237033AW0A                    [3] => 15                    [4] => 3                    [5] => 45                )            [1] => Array                (                    [0] => 2013-06-19 09:00:00                    [1] => X11Q                    [2] => 237033AW0A                    [3] => 15                    [4] => 2                    [5] => 30                )        ))数组3:Array(              [0] => SU13061301033              [1] => SU13061301032              [2] => SU13061301037 )

配列 1 は、取得された合計数量を表します。
配列 2 は在庫番号 (SU の先頭部分) の対応する数量を表し、その値は項目 [5] です。
配列 3 は、配列内のストック番号のシーケンスを表します。

配列 3 の順序に基づいて見つけることができますか?
ストック番号が SU13061301033 の場合、配列 1 の最初の 210 個のアイテムの対応するストック番号は SU13061301033 です。
ストック番号が SU13061301032 の場合、配列 1 の残りのアイテムの対応するストック番号はSU13061301033です。
この状況は順番に推測できます。

そのような対応はありますか?

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

配列 1 は単なるデータセットではありませんか?

配列 1 には 1 セットのデータしかありませんか?
これではマッチングできなくなりますよね?配列 1 と配列 3 の対応関係のみが結果を取得できます。

本当に対応関係が見つからないと、必要な値が得られないのでしょうか?

配列 1 の最初の 210 個の項目に対応します。これはなんと言いますか?

配列 1 の最初の 210 個の項目に対応します。これはなんと言いますか?
つまり、配列 3 の在庫番号が最初にランク付けされ、たとえば、最初の品目 SU13061301033、配列 2 の対応する値は 210 であるということです。次に、配列 1 の合計数量を使用して値 210 を割り当て、その後、stockno は合計数量 -210 を使用して次の値のセットを割り当てます。
PS: 結果に何か問題がある可能性があるため、SQL ステートメントを再確認する必要があります。後ほど折り返しご連絡させていただきます。

キューを使用する場合は問題ありません
しかし、鍵はデータ間の依存関係にあります

キューを使用する場合は問題ありません
しかし、鍵は依然としてデータ間の依存関係にあります
さて。明日はご指導をお願いします。

まだ考えを整理する必要があります
データを投稿するときは、print_r の結果ではなく、var_export の結果を投稿してください
他の人にとっても自分にとっても便利です

結果の保存に問題があります

まだまだ必要です考えを整理するため
データを投稿するときは、print_r の結果ではなく var_export の結果を招待します
他の人にとっても自分にとっても便利です

3 つのテーブルがあります: kw_manage、vp_barcode_2d_y、stock_detail、それぞれ在庫、在庫に対応するバッチロット番号と出荷情報。

在庫は packageno 単位で保存されます。テーブル vp_barcode_2d_y を通じて、ライブラリに保存されている packageno に対応するバッチのlotno と数量が取得されます。cust_no、およびアウトバウンドのstock_detail には、stock_no という情報と、対応する関係が含まれます。複数の cust_no と対応する数量。
例:

SU13061301012(stock_no) 	A2 	2013-06-19 09:00:00 	B12D(3) 	K25B460 	237033AW0A(cust_no) 	10 	15 	2013-06-15 15:00:00 	2013-06-15 15:30:00SU13061301012(stock_no)  	A2 	2013-06-19 09:00:00 	B12D(3) 	K25B459 	237033AW0A(cust_no)	10 	15 	2013-06-15 15:00:00 	2013-06-15 15:30:00

PS: 写真の数量は 10*15 (箱の数 * 箱の数) です
つまり、stock_no と packageno の間には、先入れを使用する必要はありません。 、バッチロットノーによる先出し対応?
または、var_export 結果のどの部分が必要ですか?

または、少し特殊な品種、つまり、以下の議論の値は単一品種に関するものです
倉庫に入るときは、「入荷バッチと数量」の 2 つの属性があります
倉庫から出るときは、「出荷するバッチと数量」の 2 つの属性があります倉庫

統計が必要のようです: どの受信バッチが特定の送信バッチを構成するか

正しく理解していますか?

または、少し特殊な品種、つまり、以下の議論の値は単一品種に関するものです
倉庫に入るときは、「入荷バッチと数量」の 2 つの属性があります
倉庫から出るときは、「出荷するバッチと数量」の 2 つの属性があります倉庫

統計が必要のようです: どの受信バッチが特定の送信バッチを構成しますか?
正しく理解していますか?
そうです。正しく理解しました。

通常、まず在庫を普通に在庫に入れ、次に在庫情報を使用して、出荷要件 (stock_detail テーブル) に基づいて要件を照合します。

インバウンド:

CREATE TABLE `kw_manage` (  `ID` int(11) NOT NULL auto_increment,  `username` varchar(10) NOT NULL,  `rkno` varchar(25) NOT NULL,  `packageno` varchar(20) NOT NULL,  `type` varchar(20) NOT NULL,  `cust_no` varchar(20) NOT NULL,  `snp` int(4) NOT NULL,  `wh_info` varchar(20) NOT NULL,  `date` datetime NOT NULL,  PRIMARY KEY  (`ID`),  KEY `packageno` (`packageno`),  KEY `date` (`date`)) ENGINE=MyISAM;INSERT INTO `kw_manage` VALUES (1, 'admin', '201302190001', 'VP3.0 130219001', 'BEM330-500', '23703 3AW0A', 15, 'YE-00-01', '2013-06-27 10:56:10');INSERT INTO `kw_manage` VALUES (2, 'admin', '201302190001', 'VP3.0 130219002', 'BEM330-500', '23703 3AW0A', 15, 'YE-00-01', '2013-06-27 10:56:12');INSERT INTO `kw_manage` VALUES (3, 'admin', '201302190001', 'VP3.0 130219003', 'BEM330-500', '23703 3AW0A', 15, 'YE-00-01', '2013-06-27 10:56:14');INSERT INTO `kw_manage` VALUES (4, 'admin', '201302190001', 'VP3.0 130219004', 'BEM330-500', '23703 3AW0A', 15, 'YE-00-01', '2013-06-28 08:45:20');INSERT INTO `kw_manage` VALUES (5, 'admin', '201302190001', 'VP3.0 130219005', 'BEM330-500', '23703 3AW0A', 15, 'YE-00-01', '2013-06-28 08:45:23');INSERT INTO `kw_manage` VALUES (6, 'admin', '201302190001', 'VP3.0 130219006', 'BEM330-500', '23703 3AW0A', 15, 'YE-00-01', '2013-06-28 08:45:26');INSERT INTO `kw_manage` VALUES (7, 'admin', '201302190001', 'VP3.0 130219007', 'BEM330-500', '23703 3AW0A', 15, 'YE-00-01', '2013-06-28 08:45:28');INSERT INTO `kw_manage` VALUES (8, 'admin', '201302190001', 'VP3.0 130219008', 'BEM330-500', '23703 3AW0A', 15, 'YE-00-01', '2013-06-28 08:45:30');INSERT INTO `kw_manage` VALUES (9, 'admin', '201302190001', 'VP3.0 130219009', 'BEM330-500', '23703 3AW0A', 15, 'YE-00-01', '2013-06-28 08:45:32');INSERT INTO `kw_manage` VALUES (10, 'admin', '201302190001', 'VP3.0 130219010', 'BEM330-500', '23703 3AW0A', 15, 'YE-00-01', '2013-06-28 08:45:35');INSERT INTO `kw_manage` VALUES (11, 'admin', '201302190001', 'VP3.0 130219011', 'BEM330-500', '23703 3AW0A', 15, 'YE-00-01', '2013-06-28 08:45:38');INSERT INTO `kw_manage` VALUES (12, 'admin', '201302190001', 'VP3.0 130219012', 'BEM330-500', '23703 3AW0A', 15, 'YE-00-01', '2013-06-28 08:45:42');INSERT INTO `kw_manage` VALUES (13, 'admin', '201302190002', 'VP3.0 130219013', 'BEM330-500', '23703 3AW0A', 15, 'YE-00-01', '2013-06-28 08:46:06');INSERT INTO `kw_manage` VALUES (14, 'admin', '201302190002', 'VP3.0 130219014', 'BEM330-500', '23703 3AW0A', 15, 'YE-00-01', '2013-06-28 08:46:09');INSERT INTO `kw_manage` VALUES (15, 'admin', '201302190002', 'VP3.0 130219015', 'BEM330-500', '23703 3AW0A', 15, 'YE-00-01', '2013-06-28 08:46:11');INSERT INTO `kw_manage` VALUES (16, 'admin', '201302190002', 'VP3.0 130219016', 'BEM330-500', '23703 3AW0A', 15, 'YE-00-01', '2013-06-28 08:46:13');INSERT INTO `kw_manage` VALUES (17, 'admin', '201302190002', 'VP3.0 130219017', 'BEM330-500', '23703 3AW0A', 15, 'YE-00-01', '2013-06-28 08:46:15');INSERT INTO `kw_manage` VALUES (18, 'admin', '201302190002', 'VP3.0 130219018', 'BEM330-500', '23703 3AW0A', 15, 'YE-00-01', '2013-06-28 08:46:18');INSERT INTO `kw_manage` VALUES (19, 'admin', '201302190002', 'VP3.0 130219019', 'BEM330-500', '23703 3AW0A', 15, 'YE-00-01', '2013-06-28 08:46:19');INSERT INTO `kw_manage` VALUES (20, 'admin', '201302190002', 'VP3.0 130219020', 'BEM330-500', '23703 3AW0A', 15, 'YE-00-01', '2013-06-28 08:46:22');INSERT INTO `kw_manage` VALUES (21, 'admin', '201302190002', 'VP3.0 130219021', 'BEM330-500', '23703 3AW0A', 15, 'YE-00-01', '2013-06-28 08:46:27');INSERT INTO `kw_manage` VALUES (22, 'admin', '201302190002', 'VP3.0 130219022', 'BEM330-500', '23703 3AW0A', 15, 'YE-00-01', '2013-06-28 08:46:30');INSERT INTO `kw_manage` VALUES (23, 'admin', '201302190002', 'VP3.0 130219023', 'BEM330-500', '23703 3AW0A', 15, 'YE-00-01', '2013-06-28 08:46:33');INSERT INTO `kw_manage` VALUES (24, 'admin', '201302190002', 'VP3.0 130219024', 'BEM330-500', '23703 3AW0A', 15, 'YE-00-01', '2013-06-28 08:46:36');INSERT INTO `kw_manage` VALUES (25, 'admin', '201302190023', 'VP3.0 130219048', 'MEC718-000', '23710 JE22A', 15, 'YQ-00-01', '2013-07-08 11:16:57');INSERT INTO `kw_manage` VALUES (26, 'admin', '201302190023', 'VP3.0 130219049', 'MEC718-000', '23710 JE22A', 15, 'YQ-00-01', '2013-07-08 11:17:01');INSERT INTO `kw_manage` VALUES (27, 'admin', '201302190023', 'VP3.0 130219050', 'MEC718-000', '23710 JE22A', 15, 'YQ-00-01', '2013-07-08 11:17:08');INSERT INTO `kw_manage` VALUES (28, 'admin', '201302190023', 'VP3.0 130219051', 'MEC718-000', '23710 JE22A', 15, 'YQ-00-01', '2013-07-08 11:17:13');INSERT INTO `kw_manage` VALUES (29, 'admin', '201302190023', 'VP3.0 130219052', 'MEC718-000', '23710 JE22A', 15, 'YQ-00-01', '2013-07-08 11:17:23');INSERT INTO `kw_manage` VALUES (30, 'admin', '201302190023', 'VP3.0 130219053', 'MEC718-000', '23710 JE22A', 15, 'YQ-00-01', '2013-07-08 11:17:30');INSERT INTO `kw_manage` VALUES (31, 'admin', '201302190023', 'VP3.0 130219054', 'MEC718-000', '23710 JE22A', 15, 'YQ-00-01', '2013-07-08 11:17:39');INSERT INTO `kw_manage` VALUES (32, 'admin', '201302190023', 'VP3.0 130219055', 'MEC718-000', '23710 JE22A', 15, 'YQ-00-01', '2013-07-08 11:17:54');

先入れ先出しの原則に基づいて、アウトバウンドプロセスは次のとおりです:

アウトバウンド数量はわかっています
インバウンドテーブルを調べて、アウトバウンド数量から現在のインバウンドバッチ数量を差し引きます。出荷数量が 0 以下になるまで
出荷数量が負の場合は、その絶対値を加算し直します


先入れ先出しの原則に基づいて、出荷プロセスは次のようになります:

数量は既知です
倉庫テーブルをトラバースし、出荷数量が 0 以下になるまで、出荷数量から現在の入荷バッチの数量を差し引きます
出荷数量が負の場合は、その絶対値を加算して戻します
出荷:

$sql4 = "select arr_time,c_type,cust_no,snp,mount,mount*snp as m_total,stock_no from `".$t."` where stock_no = '".$stockno[$j-1]."'";//	echo $sql4.'<br />';	$result4 = mysql_query($sql4);	$ar = array();	while($var = mysql_fetch_array($result4,MYSQL_NUM))	{		$ar[] = $var;	}	$a = array();	foreach ($ar as $item) {    $key = array_pop($item);    if (! isset($a[$key])) $a[$key] = array();    $a[$key][] = $item;}var_xeport的结果:array ( 'SU13061301033' => array ( 0 => array ( 0 => '2013-06-19 09:00:00', 1 => 'X02B', 2 => '237033AW0A', 3 => '15', 4 => '14', 5 => '210', ), ), )


インバウンド:
$sql = "select DISTINCT b.packageno,a.stock_no from `stock_detail` as a,`kw_manage` as b where a.stock_no = '".$stockno[$j-1]."' and a.cust_no = replace( b.cust_no, ' ', '' )";//	echo $sql.'<br />';	$result = mysql_query($sql);	$res = array(); //设置一个用于存放结果的数组	while($row = mysql_fetch_array($result,MYSQL_ASSOC))	{		$sql2 = "select lotno,count(lotno) from `vp_barcode_2d_y` where packageno = '".$row['packageno']."' group by lotno,packageno order by lotno asc";//		echo $sql2.'<br />';		$result2 = mysql_query($sql2);		$var = array();		while($row2 = mysql_fetch_array($result2,MYSQL_NUM))		{			if(isset($res[$row2[0]])) 			$res[$row2[0]]['count'] += $row2[1];			else 			$res[$row2[0]] = array('lotno'=>$row2[0],'count'=>$row2[1]);		}	}	ksort($res);//	print_r($res);	$arrs = array();	foreach($res as $v2)	{		$arrs[] = $v2;	}	var_export($arrs);结果:array ( 0 => array ( 'lotno' => '3207', 'count' => 360, ), )//这个结果是入库的总数量,是否要求得分别的数量? 

投稿したコードはどういう意味ですか?

你贴 入库 的代码是什么意思?
不需要知道入库总量?如何去判定入库的批次已匹配过,不回出现在其他的stock_no的结果中?

你给的数据和代码不配套
Unknown column 'arr_time' in 'field list'

刚才出库的数据没给全,贴不下了。现在补上。

CREATE TABLE `stock_detail` (  `ID` int(11) NOT NULL auto_increment,`stock_no` varchar(20) NOT NULL,`adress` varchar(10) NOT NULL,`arr_time` datetime NOT NULL,`c_type` varchar(20) NOT NULL,`pu_no` varchar(20) NOT NULL,`cust_no` varchar(20) NOT NULL,`mount` int(10) NOT NULL,`snp` int(10) NOT NULL,`c1_time` datetime NOT NULL,`c2_time` datetime NOT NULL, PRIMARY KEY  (`ID`)) ENGINE=MyISAM;INSERT INTO `stock_detail` VALUES (42, 'SU13061301029', 'B', '2013-06-20 22:00:00', 'P32L', 'K25K498', '310F61VA5A', 9, 16, '2013-06-15 15:00:00', '2013-06-15 15:30:00');INSERT INTO `stock_detail` VALUES (43, 'SU13061301029', 'B', '2013-06-20 22:00:00', 'P32L', 'K25K497', '310F61VA5A', 10, 16, '2013-06-15 15:00:00', '2013-06-15 15:30:00');INSERT INTO `stock_detail` VALUES (44, 'SU13061301031', 'A1', '2013-06-20 09:00:00', 'X02B', 'K25B418', '237033AW0A', 14, 15, '2013-06-15 15:00:00', '2013-06-15 15:30:00');INSERT INTO `stock_detail` VALUES (45, 'SU13061301030', 'A1', '2013-06-20 09:00:00', 'X02B', 'K25B417', '237033AW0A', 17, 15, '2013-06-15 15:00:00', '2013-06-15 15:30:00');INSERT INTO `stock_detail` VALUES (46, 'SU13061301033', 'A1', '2013-06-19 09:00:00', 'X02B', 'K25B416', '237033AW0A', 14, 15, '2013-06-15 15:00:00', '2013-06-15 15:30:00');INSERT INTO `stock_detail` VALUES (47, 'SU13061301032', 'A1', '2013-06-19 09:00:00', 'X02B', 'K25B415', '237033AW0A', 17, 15, '2013-06-15 15:00:00', '2013-06-15 15:30:00');INSERT INTO `stock_detail` VALUES (48, 'SU13061301034', 'A1', '2013-06-19 09:00:00', 'X11Q', 'K25B407', '237033AW0A', 6, 15, '2013-06-15 15:00:00', '2013-06-15 15:30:00');INSERT INTO `stock_detail` VALUES (49, 'SU13061301034', 'A1', '2013-06-19 09:00:00', 'X11Q', 'K25B408', '237033AW0A', 9, 15, '2013-06-15 15:00:00', '2013-06-15 15:30:00');INSERT INTO `stock_detail` VALUES (50, 'SU13061301035', 'A1', '2013-06-20 09:00:00', 'X11Q', 'K25B409', '237033AW0A', 7, 15, '2013-06-15 15:00:00', '2013-06-15 15:30:00');INSERT INTO `stock_detail` VALUES (51, 'SU13061301035', 'A1', '2013-06-20 09:00:00', 'X11Q', 'K25B410', '237033AW0A', 9, 15, '2013-06-15 15:00:00', '2013-06-15 15:30:00');INSERT INTO `stock_detail` VALUES (52, 'SU13061301036', 'A1', '2013-06-20 09:00:00', 'X11Q', 'K25B434', '237033AW0A', 3, 15, '2013-06-15 15:00:00', '2013-06-15 15:30:00');INSERT INTO `stock_detail` VALUES (53, 'SU13061301036', 'A1', '2013-06-20 09:00:00', 'X11Q', 'K25B433', '237033AW0A', 2, 15, '2013-06-15 15:00:00', '2013-06-15 15:30:00');INSERT INTO `stock_detail` VALUES (54, 'SU13061301037', 'A1', '2013-06-19 09:00:00', 'X11Q', 'K25B431', '237033AW0A', 3, 15, '2013-06-15 15:00:00', '2013-06-15 15:30:00');INSERT INTO `stock_detail` VALUES (55, 'SU13061301037', 'A1', '2013-06-19 09:00:00', 'X11Q', 'K25B432', '237033AW0A', 2, 15, '2013-06-15 15:00:00', '2013-06-15 15:30:00');INSERT INTO `stock_detail` VALUES (56, 'SU13061500001', 'A1', '2013-06-20 09:00:00', 'L11K', 'C6E0085', '23703EX80A', 2, 15, '2013-06-15 15:00:00', '2013-06-15 15:30:00');INSERT INTO `stock_detail` VALUES (57, 'SU13061500002', 'A1', '2013-06-20 09:00:00', 'X11Q', 'C6E0084', '237033AW0A', 1, 15, '2013-06-15 15:00:00', '2013-06-15 15:30:00');

你给的数据和代码不配套
Unknown column 'arr_time' in 'field list'
烦见20#

本着先进先出的原则,出库过程是这样的:
出库数量已知
遍历入库表,从 出库数量 中扣除当前入库批次的数量,直到 出库数量 小于等于 0
若 出库数量 为负,则将其绝对值加回去

烦请举个例子吧,对这句话的意思不理解。
遍历入库表,从 出库数量 中扣除当前入库批次的数量

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