viviosoft Posted April 27, 2011 Share Posted April 27, 2011 Hello guys! I've been struggling with this problem for some time now. Just can't seem to wrap my head around how to accomplish it. Please take a moment to give a hand. I'll be willing to answer any questions. My problem is that my end result array has data that I need to captured (within the array) and put into a database. However, the data within the array needs looped within the array??? Say what? The input file has data in it that I parse through and cleaned up (that's the code provided). The final output array $cleanEDIAry[] is what I need to loop thru and determine wherever there is a DTM I need to loop and grab the price information so I can use for all the SLN numbers and between each DTM. The DTM (Date Time Stamp) is my LOOP identifier for each data segment. If you run the code as is it will remove all unnecessary data and should give you a better idea of the direction I'm trying to go. So the database output would look something like: [/code] This would be ONE DTM loop SKU | PRICE1 | PRICE2 | COLOR ---------------------------|-------------------|---------------|------------------ RKDA100AA591 | 9.790 | 11.190 | SAGE TWEED RKDA100AA592 | 9.790 | 11.190 | CREAMY TOFFEE RKDA100AA593 | 9.790 | 11.190 | GALAXY GRAY Someone looking at this is GOING to have to spend a couple of minutes looking things over to understand what I'm after. Again, I would LOVE someone to give me some direction. Thanks in advance! <?php /** * Splits a string based on a delimiter * and returns the array. * * @param String $edi * @param char $delim * @return Array */ function parseEDI($edi, $delim) { return split($delim, $edi); } /** * Read contents from the EDI document * text file. * * @param string $input */ function readInput($input) { $fh = fopen($input, 'r') or die("Can't open input file!"); $contents = fread($fh, filesize($input)); fclose($fh); // Return the string return $contents; } // Read in the EDI data set to use for inserting into database $input = '832x12Data.txt'; // Allowed segments $allowedSegments = array('DTM', 'MEA', 'SLN', 'PID', 'CTP'); // Not Allowed data per allowed line $notAllowed = array('DTM*007*', 'MEA**LN*', 'MEA**WD*', '*FT', 'O******SK*'); // Read our file $edi = readInput($input); // Find the terminator and delimiter to use later for Parser $segTerm = substr($edi,105,1); $segSep = "\\" . substr($edi,3, 1); // Parse the EDI into an array // Use default delimiter $ediArray = parseEDI($edi, $segTerm); // Loop through the results and build // the array based on the AllowedSegments Array above for ($i=0; $i < count($ediArray); $i++) { // Declare variables $line = $ediArray[$i]; $ediLine = parseEDI($line, $segSep); $segment = trim($ediLine[0]); // If the values are not in the AllowedSegments // array then we do not want to add them to our new Array. if (in_array($segment, $allowedSegments)) { $cleanEDIAry[] = $line; } } // Want to loop thru the array and find anywhere there is a DTM. IF there is a DTM I want // loop thru the data to find the CTM (Price) to use for each SK (SKU) foreach ($cleanEDIAry as $dtm) { $ediLine = parseEDI($dtm, $segSep); echo $ediLine[3] . '<br>' ; } exit; Data File: should be named: 832x12Data.txt ISA*00* *00* *ZZ*OHIO VALLEY *ZZ*OVF30900 *110413*1218*U*00400*000000439*0* *> GS*SC*OHIO VALLEY*OVF30900*20110413*121803*220*X*004010 ST*832*000000001 BCT*PS**0 CUR*SE*USD REF*11*030900 LIN**GS*A08*MF*ROOKWOOD CARPET*ST*A08 DTM*007*20110413 REF*19**OHIO VALLEY FLOORING PID*F*TRN***LAKE TAHOE 12FT PID*F*MAC***CARINDR MEA**LN*125.0*FT MEA**WD*12.0*FT MEA**SW*0.333*FP CTP**LPR*10.990**SY****ST CTP**LPR*10.990**SY****CT G43*003**INVENTORY SLN*1**O******SK*RKDAB408001*****ST*A08 PID*F*73***LIGHTHOUSE PID*F*35***001 SLN*2**O******SK*RKDAB408002*****ST*A08 PID*F*73***COOKIE DOUGH PID*F*35***002 SLN*3**O******SK*RKDAB408003*****ST*A08 PID*F*73***WOOD SAGE PID*F*35***003 SLN*4**O******SK*RKDAB408004*****ST*A08 PID*F*73***CAFÉ LATTE PID*F*35***004 LIN**GS*A10*MF*ROOKWOOD CARPET*ST*A10 DTM*007*20110413 REF*19**OHIO VALLEY FLOORING PID*F*TRN***RATIO 12FT PID*F*MAC***CARINDC MEA**LN*125.0*FT MEA**WD*12.0*FT MEA**SW*0.421*FP CTP**LPR*9.790**SY****ST CTP**LPR*10.490**SY****CT G43*003**INVENTORY SLN*1**O******SK*RKDA1010255*****ST*A10 PID*F*73***PROPORTION PID*F*35***10255 SLN*2**O******SK*RKDA1010351*****ST*A10 PID*F*73***EQUATION PID*F*35***10351 SLN*3**O******SK*RKDA1010356*****ST*A10 PID*F*73***QUOTA PID*F*35***10356 SLN*4**O******SK*RKDA1010451*****ST*A10 PID*F*73***RATE PID*F*35***10451 SLN*5**O******SK*RKDA1010455*****ST*A10 PID*F*73***FRACTION PID*F*35***10455 SLN*6**O******SK*RKDA1010458*****ST*A10 PID*F*73***PERCENTAGE PID*F*35***10458 SLN*7**O******SK*RKDA1010555*****ST*A10 PID*F*73***DIVISION PID*F*35***10555 SLN*8**O******SK*RKDA1010556*****ST*A10 PID*F*73***STANDARD PID*F*35***10556 SLN*9**O******SK*RKDA1010751*****ST*A10 PID*F*73***QUALITY PID*F*35***10751 SLN*10**O******SK*RKDA1010752*****ST*A10 PID*F*73***SCALE PID*F*35***10752 SLN*11**O******SK*RKDA1010755*****ST*A10 PID*F*73***FORMULA PID*F*35***10755 SLN*12**O******SK*RKDA1010756*****ST*A10 PID*F*73***MEASUREMENT PID*F*35***10756 LIN**GS*A100A*MF*ROOKWOOD CARPET*ST*A100A DTM*007*20110413 REF*19**OHIO VALLEY FLOORING PID*F*TRN***SUPERINTENDENT PID*F*MAC***CARINDR MEA**LN*125.0*FT MEA**WD*12.0*FT MEA**SW*0.500*FP CTP**LPR*9.790**SY****ST CTP**LPR*11.190**SY****CT G43*003**INVENTORY SLN*1**O******SK*RKDA100AA591*****ST*A100A PID*F*73***SAGE TWEED PID*F*35***A591 SLN*2**O******SK*RKDA100AA592*****ST*A100A PID*F*73***CREAMY TOFFEE PID*F*35***A592 SLN*3**O******SK*RKDA100AA593*****ST*A100A PID*F*73***GALAXY GRAY PID*F*35***A593 LIN**GS*A161*MF*ROOKWOOD CARPET*ST*A161 DTM*007*20110413 REF*19**OHIO VALLEY FLOORING PID*F*TRN***ESSAY 24 X 24 TILE PID*F*MAC***CARTILR MEA**SU*1.000*CT CTP**LPR*120.410**CT G43*003**INVENTORY SLN*1**O******SK*RKDA1615110*****ST*A161 PID*F*73***JAMOCA CREAM PID*F*35***15110 LIN**GS*A162*MF*ROOKWOOD CARPET*ST*A162 DTM*007*20110413 REF*19**OHIO VALLEY FLOORING PID*F*TRN***ESSAY 24 X 24 TILE PID*F*MAC***CARTILR MEA**SU*1.000*CT CTP**LPR*120.410**CT G43*003**INVENTORY SLN*1**O******SK*RKDA1615111*****ST*A162 PID*F*73***NATURAL SAND PID*F*35***15111 LIN**GS*A163*MF*ROOKWOOD CARPET*ST*A163 DTM*007*20110413 REF*19**OHIO VALLEY FLOORING PID*F*TRN***ESSAY 24 X 24 TILE PID*F*MAC***CARTILR MEA**SU*1.000*CT CTP**LPR*120.410**CT G43*003**INVENTORY SLN*1**O******SK*RKDA1615211*****ST*A163 PID*F*73***SUNGLITZ PID*F*35***15211 LIN**GS*A164*MF*ROOKWOOD CARPET*ST*A164 DTM*007*20110413 REF*19**OHIO VALLEY FLOORING PID*F*TRN***ESSAY 24 X 24 TILE PID*F*MAC***CARTILR MEA**SU*1.000*CT CTP**LPR*120.410**CT G43*003**INVENTORY SLN*1**O******SK*RKDA1615311*****ST*A164 PID*F*73***EXOTIC OLIVE PID*F*35***15311 LIN**GS*A165*MF*ROOKWOOD CARPET*ST*A165 DTM*007*20110413 REF*19**OHIO VALLEY FLOORING PID*F*TRN***ESSAY 24 X 24 TILE PID*F*MAC***CARTILR MEA**SU*1.000*CT CTP**LPR*120.410**CT G43*003**INVENTORY SLN*1**O******SK*RKDA1615312*****ST*A165 PID*F*73***NIGHTTIME WOODS PID*F*35***15312 LIN**GS*A166*MF*ROOKWOOD CARPET*ST*A166 DTM*007*20110413 REF*19**OHIO VALLEY FLOORING PID*F*TRN***ESSAY 24 X 24 TILE PID*F*MAC***CARTILR MEA**SU*1.000*CT CTP**LPR*120.410**CT G43*003**INVENTORY SLN*1**O******SK*RKDA1615412*****ST*A166 PID*F*73***UNDERSEAS PID*F*35***15412 LIN**GS*A167*MF*ROOKWOOD CARPET*ST*A167 DTM*007*20110413 REF*19**OHIO VALLEY FLOORING PID*F*TRN***ESSAY 24 X 24 TILE PID*F*MAC***CARTILR MEA**SU*1.000*CT CTP**LPR*120.410**CT G43*003**INVENTORY SLN*1**O******SK*RKDA1615511*****ST*A167 PID*F*73***MOONDUST PID*F*35***15511 LIN**GS*A168*MF*ROOKWOOD CARPET*ST*A168 DTM*007*20110413 REF*19**OHIO VALLEY FLOORING PID*F*TRN***ESSAY 24 X 24 TILE PID*F*MAC***CARTILR MEA**SU*1.000*CT CTP**LPR*120.410**CT G43*003**INVENTORY SLN*1**O******SK*RKDA1615514*****ST*A168 PID*F*73***MIDNIGHT SKY PID*F*35***15514 LIN**GS*A169*MF*ROOKWOOD CARPET*ST*A169 DTM*007*20110413 REF*19**OHIO VALLEY FLOORING PID*F*TRN***ESSAY 24 X 24 TILE PID*F*MAC***CARTILR MEA**SU*1.000*CT CTP**LPR*120.410**CT G43*003**INVENTORY SLN*1**O******SK*RKDA1615515*****ST*A169 PID*F*73***BREEZEWAY PID*F*35***15515 LIN**GS*A170*MF*ROOKWOOD CARPET*ST*A170 DTM*007*20110413 REF*19**OHIO VALLEY FLOORING PID*F*TRN***ESSAY 24 X 24 TILE PID*F*MAC***CARTILR MEA**SU*1.000*CT CTP**LPR*120.410**CT G43*003**INVENTORY SLN*1**O******SK*RKDA1615516*****ST*A170 PID*F*73***LOWLAND FOG PID*F*35***15516 LIN**GS*A171*MF*ROOKWOOD CARPET*ST*A171 DTM*007*20110413 REF*19**OHIO VALLEY FLOORING PID*F*TRN***ESSAY 24 X 24 TILE PID*F*MAC***CARTILR MEA**SU*1.000*CT CTP**LPR*120.410**CT G43*003**INVENTORY SLN*1**O******SK*RKDA1615713*****ST*A171 PID*F*73***BAKED EARTH PID*F*35***15713 LIN**GS*A172*MF*ROOKWOOD CARPET*ST*A172 DTM*007*20110413 REF*19**OHIO VALLEY FLOORING PID*F*TRN***ESSAY 24 X 24 TILE PID*F*MAC***CARTILR MEA**SU*1.000*CT CTP**LPR*120.410**CT G43*003**INVENTORY SLN*1**O******SK*RKDA1615811*****ST*A172 PID*F*73***ARIZONA ROSE PID*F*35***15811 LIN**GS*A405*MF*ROOKWOOD CARPET*ST*A405 DTM*007*20110413 REF*19**OHIO VALLEY FLOORING PID*F*TRN***BAYWATCH (F) 12FT PID*F*MAC***CARINDR MEA**LN*125.0*FT MEA**WD*12.0*FT MEA**SW*0.562*FP CTP**LPR*14.690**SY****ST CTP**LPR*16.690**SY****CT G43*003**INVENTORY SLN*1**O******SK*RKDA405A001*****ST*A405 PID*F*73***BEACH CHAIR PID*F*35***A001 LIN**GS*A410*MF*ROOKWOOD CARPET*ST*A410 DTM*007*20110413 REF*19**OHIO VALLEY FLOORING PID*F*TRN***ORCHARD KNOB PID*F*MAC***CARINDR MEA**LN*125.0*FT MEA**WD*12.0*FT MEA**SW*0.417*FP CTP**LPR*7.990**SY****ST CTP**LPR*9.090**SY****CT G43*003**INVENTORY SLN*1**O******SK*RKDA410A002*****ST*A410 PID*F*73***PECAN SHELL PID*F*35***A002 SLN*2**O******SK*RKDA410A005*****ST*A410 PID*F*73***GRAIN PID*F*35***A005 SLN*3**O******SK*RKDA410A011*****ST*A410 PID*F*73***FAWN PID*F*35***A011 SLN*4**O******SK*RKDA410A016*****ST*A410 PID*F*73***BUCKWILD PID*F*35***A015 LIN**GS*A411*MF*ROOKWOOD CARPET*ST*A411 DTM*007*20110413 REF*19**OHIO VALLEY FLOORING PID*F*TRN***MISSIONARY RIDGE PID*F*MAC***CARINDR MEA**LN*125.0*FT MEA**WD*12.0*FT MEA**SW*0.417*FP CTP**LPR*7.990**SY****ST CTP**LPR*9.090**SY****CT G43*003**INVENTORY SLN*1**O******SK*RKDA411A005*****ST*A411 PID*F*73***WILD OATS PID*F*35***A005 SLN*2**O******SK*RKDA411A013*****ST*A411 PID*F*73***SMOKED ALMOND PID*F*35***A013 LIN**GS*A415*MF*ROOKWOOD CARPET*ST*A415 DTM*007*20110413 REF*19**OHIO VALLEY FLOORING PID*F*TRN***BLUFF VIEW S PID*F*MAC***CARINDR MEA**LN*125.0*FT MEA**WD*12.0*FT MEA**SW*0.625*FP CTP**LPR*16.890**SY****ST CTP**LPR*19.390**SY****CT G43*003**INVENTORY SLN*1**O******SK*RKDA415A002*****ST*A415 PID*F*73***TUNDRA PID*F*35***A002 SLN*2**O******SK*RKDA415A003*****ST*A415 PID*F*73***BIRCH BRIAR PID*F*35***A003 SLN*3**O******SK*RKDA415A004*****ST*A415 PID*F*73***SAHARA PID*F*35***A004 LIN**GS*A416*MF*ROOKWOOD CARPET*ST*A416 DTM*007*20110413 REF*19**OHIO VALLEY FLOORING PID*F*TRN***FOUR BRIDGES F PID*F*MAC***CARINDR MEA**LN*125.0*FT MEA**WD*12.0*FT MEA**SW*0.625*FP CTP**LPR*16.890**SY****ST CTP**LPR*19.390**SY****CT G43*003**INVENTORY SLN*1**O******SK*RKDA416A001*****ST*A416 PID*F*73***MANTLE PID*F*35***A001 SLN*2**O******SK*RKDA416A003*****ST*A416 PID*F*73***ENCHANTING PID*F*35***A003 SLN*3**O******SK*RKDA416A004*****ST*A416 PID*F*73***GLORIOUS DAYS PID*F*35***A004 LIN**GS*A424*MF*ROOKWOOD CARPET*ST*A424 DTM*007*20110413 REF*19**OHIO VALLEY FLOORING PID*F*TRN***PATAGONIA (F) 12FT PID*F*MAC***CARINDR MEA**LN*125.0*FT MEA**WD*12.0*FT MEA**SW*0.556*FP CTP**LPR*13.590**SY****ST CTP**LPR*15.490**SY****CT G43*003**INVENTORY SLN*1**O******SK*RKDA424A005*****ST*A424 PID*F*73***MACADAMIA PID*F*35***A005 LIN**GS*A43*MF*ROOKWOOD CARPET*ST*A43 DTM*007*20110413 REF*19**OHIO VALLEY FLOORING PID*F*TRN***RICH FIELDS PID*F*MAC***CARINDR MEA**LN*125.0*FT MEA**WD*12.0*FT MEA**SW*0.611*FP CTP**LPR*17.690**SY****ST CTP**LPR*20.290**SY****CT G43*003**INVENTORY SLN*1**O******SK*RKDA443A002*****ST*A43 PID*F*73***CANVAS PID*F*35***3A002 SLN*2**O******SK*RKDA443A005*****ST*A43 PID*F*73***SAHARA SANDS PID*F*35***3A005 SLN*3**O******SK*RKDA443A007*****ST*A43 PID*F*73***AUTUMN DAY PID*F*35***3A007 SLN*4**O******SK*RKDA443A009*****ST*A43 PID*F*73***SAND CASTLE PID*F*35***3A009 LIN**GS*A434*MF*ROOKWOOD CARPET*ST*A434 DTM*007*20110413 REF*19**OHIO VALLEY FLOORING PID*F*TRN***CHAMBRAY 12FT PID*F*MAC***CARINDR MEA**LN*125.0*FT MEA**WD*12.0*FT MEA**SW*0.500*FP CTP**LPR*10.390**SY****ST CTP**LPR*11.890**SY****CT G43*003**INVENTORY SLN*1**O******SK*RKDA434A005*****ST*A434 PID*F*73***BEACHSIDE PID*F*35***A005 SLN*2**O******SK*RKDA434A011*****ST*A434 PID*F*73***OATMEAL PID*F*35***A011 SLN*3**O******SK*RKDA434A013*****ST*A434 PID*F*73***HEATHER T PID*F*35***A013 SLN*4**O******SK*RKDA434A016*****ST*A434 PID*F*73***WINTER WHEAT PID*F*35***A016 SLN*5**O******SK*RKDA434A017*****ST*A434 PID*F*73***WARM CHESTNUT PID*F*35***A017 LIN**GS*A435*MF*ROOKWOOD CARPET*ST*A435 DTM*007*20110413 REF*19**OHIO VALLEY FLOORING PID*F*TRN***CHENILLE 12FT PID*F*MAC***CARINDR MEA**LN*125.0*FT MEA**WD*12.0*FT MEA**SW*0.569*FP CTP**LPR*12.890**SY****ST CTP**LPR*14.790**SY****CT G43*003**INVENTORY SLN*1**O******SK*RKDA435A005*****ST*A435 PID*F*73***BASKET BEIGE PID*F*35***A005 SLN*2**O******SK*RKDA435A013*****ST*A435 PID*F*73***SAHARA PID*F*35***A013 LIN**GS*A436*MF*ROOKWOOD CARPET*ST*A436 DTM*007*20110413 REF*19**OHIO VALLEY FLOORING PID*F*TRN***AMERICAN DREAM (F) 12FT PID*F*MAC***CARINDR MEA**LN*125.0*FT MEA**WD*12.0*FT MEA**SW*0.500*FP CTP**LPR*9.090**SY****ST CTP**LPR*10.390**SY****CT G43*003**INVENTORY SLN*1**O******SK*RKDA436A005*****ST*A436 PID*F*73***DESERT BEIGE PID*F*35***A005 SLN*2**O******SK*RKDA436A011*****ST*A436 PID*F*73***TAWNY PID*F*35***A011 SLN*3**O******SK*RKDA436A013*****ST*A436 PID*F*73***SILKY SAND PID*F*35***A013 SLN*4**O******SK*RKDA436A016*****ST*A436 PID*F*73***WOODCARVING PID*F*35***A016 SLN*5**O******SK*RKDA436A017*****ST*A436 PID*F*73***PRALINE PID*F*35***A017 LIN**GS*A437*MF*ROOKWOOD CARPET*ST*A437 DTM*007*20110413 REF*19**OHIO VALLEY FLOORING PID*F*TRN***AMERICAN DREAM (S) 12FT PID*F*MAC***CARINDR MEA**LN*125.0*FT MEA**WD*12.0*FT MEA**SW*0.500*FP CTP**LPR*9.090**SY****ST CTP**LPR*10.390**SY****CT G43*003**INVENTORY SLN*1**O******SK*RKDA437A005*****ST*A437 PID*F*73***BRIAR WOOD PID*F*35***A005 SLN*2**O******SK*RKDA437A013*****ST*A437 PID*F*73***PARCHMENT PID*F*35***A013 SLN*3**O******SK*RKDA437A016*****ST*A437 PID*F*73***RAWHIDE PID*F*35***A016 SLN*4**O******SK*RKDA437A017*****ST*A437 PID*F*73***TREE HOUSE PID*F*35***A017 LIN**GS*A44*MF*ROOKWOOD CARPET*ST*A44 DTM*007*20110413 REF*19**OHIO VALLEY FLOORING PID*F*TRN***OPTICAL ILLUSION PID*F*MAC***CARINDR MEA**LN*125.0*FT MEA**WD*12.0*FT MEA**SW*0.500*FP CTP**LPR*20.890**SY****ST CTP**LPR*23.890**SY****CT G43*003**INVENTORY SLN*1**O******SK*RKDA444A001*****ST*A44 PID*F*73***DARK SAND PID*F*35***4A001 SLN*2**O******SK*RKDA444A002*****ST*A44 PID*F*73***LIGHT TAN PID*F*35***4A002 SLN*3**O******SK*RKDA444A003*****ST*A44 PID*F*73***PARCHMENT PID*F*35***4A003 SLN*4**O******SK*RKDA444A004*****ST*A44 PID*F*73***SMOKEWOOD PID*F*35***4A004 SLN*5**O******SK*RKDA444A005*****ST*A44 PID*F*73***TANNED LEATHER PID*F*35***4A005 SLN*6**O******SK*RKDA444A006*****ST*A44 PID*F*73***HICKORY PID*F*35***4A006 LIN**GS*BD100*MF*ROOKWOOD CARPET*ST*BD100 DTM*007*20110413 REF*19**OHIO VALLEY FLOORING PID*F*TRN***IMPACT I PID*F*MAC***CARINDR MEA**LN*150.0*FT MEA**WD*12.0*FT MEA**SW*0.396*FP CTP**LPR*12.090**SY****ST CTP**LPR*12.890**SY****CT G43*003**INVENTORY SLN*1**O******SK*RKDBD1000131*****ST*BD100 PID*F*73***CALM BUFF PID*F*35***00131 SLN*2**O******SK*RKDBD1000230*****ST*BD100 PID*F*73***SUGAR COOKIE PID*F*35***00230 LIN**GS*BD110*MF*ROOKWOOD CARPET*ST*BD110 DTM*007*20110413 REF*19**OHIO VALLEY FLOORING PID*F*TRN***IMPACT II PID*F*MAC***CARINDR MEA**LN*150.0*FT MEA**WD*12.0*FT MEA**SW*0.451*FP CTP**LPR*13.790**SY****ST CTP**LPR*14.490**SY****CT G43*003**INVENTORY SLN*1**O******SK*RKDBD1100130*****ST*BD110 PID*F*73***MILKY WAY PID*F*35***00130 SLN*2**O******SK*RKDBD1100131*****ST*BD110 PID*F*73***CALM BUFF PID*F*35***00131 SLN*3**O******SK*RKDBD1100132*****ST*BD110 PID*F*73***CHANTILLY PID*F*35***00132 SLN*4**O******SK*RKDBD1100133*****ST*BD110 PID*F*73***BABY FAWN PID*F*35***00133 SLN*5**O******SK*RKDBD1100134*****ST*BD110 PID*F*73***CREAMY HAZE PID*F*35***00134 SLN*6**O******SK*RKDBD1100135*****ST*BD110 PID*F*73***ASHWOOD PID*F*35***00135 SLN*7**O******SK*RKDBD1100136*****ST*BD110 PID*F*73***PALE OAK PID*F*35***00136 SLN*8**O******SK*RKDBD1100137*****ST*BD110 PID*F*73***CEDAR KEY PID*F*35***00137 SLN*9**O******SK*RKDBD1100138*****ST*BD110 PID*F*73***WHITE SAND PID*F*35***00138 SLN*10**O******SK*RKDBD1100139*****ST*BD110 PID*F*73***BALBOA MIST PID*F*35***00139 SLN*11**O******SK*RKDBD1100230*****ST*BD110 PID*F*73***SUGAR COOKIE PID*F*35***00230 SLN*12**O******SK*RKDBD1100231*****ST*BD110 PID*F*73***CAPRI COAST PID*F*35***00231 SLN*13**O******SK*RKDBD1100232*****ST*BD110 PID*F*73***GOLDTONE PID*F*35***00232 SLN*14**O******SK*RKDBD1100330*****ST*BD110 PID*F*73***OLIVE TIN PID*F*35***00330 SLN*15**O******SK*RKDBD1100332*****ST*BD110 PID*F*73***ULTRA GREEN PID*F*35***00332 SLN*16**O******SK*RKDBD1100432*****ST*BD110 PID*F*73***ADMIRAL BLUE PID*F*35***00432 SLN*17**O******SK*RKDBD1100531*****ST*BD110 PID*F*73***ARTIC MIST PID*F*35***00531 SLN*18**O******SK*RKDBD1100630*****ST*BD110 PID*F*73***OCTOBER LEAVES PID*F*35***00630 SLN*19**O******SK*RKDBD1100730*****ST*BD110 PID*F*73***KAHLUA CREAM PID*F*35***00730 SLN*20**O******SK*RKDBD1100731*****ST*BD110 PID*F*73***GLAZED BROWN PID*F*35***00731 SLN*21**O******SK*RKDBD1100732*****ST*BD110 PID*F*73***COUNTRY STONE PID*F*35***00732 SLN*22**O******SK*RKDBD1100733*****ST*BD110 PID*F*73***CHOCOLATE DIP PID*F*35***00733 SLN*23**O******SK*RKDBD1100734*****ST*BD110 PID*F*73***APPLE BUTTER PID*F*35***00734 SLN*24**O******SK*RKDBD1100832*****ST*BD110 PID*F*73***DARK CHERRY PID*F*35***00832 LIN**GS*B109*MF*ROOKWOOD CARPET*ST*B109 DTM*007*20110413 REF*19**OHIO VALLEY FLOORING PID*F*TRN***GRACIE PID*F*MAC***CARINDC MEA**LN*131.069*FT MEA**WD*12.0*FT MEA**SW*0.222*FP CTP**LPR*8.790**SY****ST CTP**LPR*9.290**SY****CT G43*003**INVENTORY SLN*1**O******SK*RKDB1095482-12*****ST*B109 PID*F*73***WILLOWDALE PID*F*35***5482 SLN*2**O******SK*RKDB1095482-15*****ST*B109 PID*F*73***WILLOWDALE PID*F*35***5482 SLN*3**O******SK*RKDB1095483-12*****ST*B109 PID*F*73***CUMBERLAND PID*F*35***5483 SLN*4**O******SK*RKDB1095483-15*****ST*B109 PID*F*73***CUMBERLAND PID*F*35***5483 SLN*5**O******SK*RKDB1095484-12*****ST*B109 PID*F*73***WOODLAND MEADOW PID*F*35***5484 SLN*6**O******SK*RKDB1095484-15*****ST*B109 PID*F*73***WOODLAND MEADOW PID*F*35***5484 SLN*7**O******SK*RKDB1095795-12*****ST*B109 PID*F*73***BRAMBLE PID*F*35***5795 SLN*8**O******SK*RKDB1095795-15*****ST*B109 PID*F*73***BRAMBLE PID*F*35***5795 SLN*9**O******SK*RKDB1095796-12*****ST*B109 PID*F*73***SUGARCANE PID*F*35***5796 SLN*10**O******SK*RKDB1095796-15*****ST*B109 PID*F*73***SUGARCANE PID*F*35***5796 SLN*11**O******SK*RKDB1096017-12*****ST*B109 PID*F*73***INDIAN CORN PID*F*35***6017 SLN*12**O******SK*RKDB1096017-15*****ST*B109 PID*F*73***INDIAN CORN PID*F*35***6017 SLN*13**O******SK*RKDB1096602-12*****ST*B109 PID*F*73***SANDSTONE PID*F*35***6602 SLN*14**O******SK*RKDB1096602-15*****ST*B109 PID*F*73***SANDSTONE PID*F*35***6602 SLN*15**O******SK*RKDB1096603-12*****ST*B109 PID*F*73***FIELDSTONE PID*F*35***6603 SLN*16**O******SK*RKDB1096603-15*****ST*B109 PID*F*73***FIELDSTONE PID*F*35***6603 SLN*17**O******SK*RKDB1096604-12*****ST*B109 PID*F*73***PECAN FROST PID*F*35***6604 SLN*18**O******SK*RKDB1096604-15*****ST*B109 PID*F*73***PECAN FROST PID*F*35***6604 LIN**GS*B112*MF*ROOKWOOD CARPET*ST*B112 Quote Link to comment https://forums.phpfreaks.com/topic/234879-much-needed-help-with-arrayed-data/ Share on other sites More sharing options...
sunfighter Posted April 27, 2011 Share Posted April 27, 2011 FYI split() has been depreciated since ver 4. What ver of php are you using? Quote Link to comment https://forums.phpfreaks.com/topic/234879-much-needed-help-with-arrayed-data/#findComment-1207118 Share on other sites More sharing options...
viviosoft Posted April 27, 2011 Author Share Posted April 27, 2011 PHP ver. 5.0.... can you also provide some insight on my problem? Quote Link to comment https://forums.phpfreaks.com/topic/234879-much-needed-help-with-arrayed-data/#findComment-1207121 Share on other sites More sharing options...
btherl Posted April 28, 2011 Share Posted April 28, 2011 Can you put this in your final loop: print "<pre>"; var_dump($ediLine);exit; and post the output. After that you can remove the added line. Quote Link to comment https://forums.phpfreaks.com/topic/234879-much-needed-help-with-arrayed-data/#findComment-1207322 Share on other sites More sharing options...
viviosoft Posted April 28, 2011 Author Share Posted April 28, 2011 Here you are btherl: array 0 => string 'DTM' (length=3) 1 => string '007' (length=3) 2 => string '20110413' (length= Thanks for looking into this for me. Quote Link to comment https://forums.phpfreaks.com/topic/234879-much-needed-help-with-arrayed-data/#findComment-1207548 Share on other sites More sharing options...
btherl Posted April 28, 2011 Share Posted April 28, 2011 Thanks.. so each time you see a DTM, do you need to start collecting data for one row of your output? And the lines between each DTM line are the data for that output row? If that's the case, your final loop could look something like this: $cur_item = null; $items = array(); foreach ($cleanEDIAry as $dtm) { $ediLine = parseEDI($dtm, $segSep); if ($ediLine[0] == 'DTM') { # New item. Check if we need to store the old one if ($cur_item !== null) { $items[] = $cur_item; } $cur_item['DTM'] = $ediLine[2]; # Or similar .. actually it looks like you don't use the DTM value in the output } elseif ($ediLine[0] == 'SLN') { $cur_item['SLN'] = $ediLine[3]; # An RK.... thingy } } if ($cur_item !== null) { $items[] = $cur_item; } You can add more "elseif" to handle each data point you want to collect. The final check is to catch the last item in the list, which won't be terminated by a DTM line, and would otherwise be missed. Quote Link to comment https://forums.phpfreaks.com/topic/234879-much-needed-help-with-arrayed-data/#findComment-1207932 Share on other sites More sharing options...
viviosoft Posted April 29, 2011 Author Share Posted April 29, 2011 Thanks again btherl. When I do a var_dump on $Items I get the following. I'm running the dump outside the foreach loop. Wounder why it's duplicating and not producing new values each new array? array 0 => array 'DTM' => string '20110413' (length= 'SLN' => string 'O' (length=1) 1 => array 'DTM' => string '20110413' (length= 'SLN' => string 'O' (length=1) 2 => array 'DTM' => string '20110413' (length= 'SLN' => string 'O' (length=1) 3 => array 'DTM' => string '20110413' (length= 'SLN' => string 'O' (length=1) 4 => array 'DTM' => string '20110413' (length= 'SLN' => string 'O' (length=1) 5 => array 'DTM' => string '20110413' (length= 'SLN' => string 'O' (length=1) 6 => array 'DTM' => string '20110413' (length= 'SLN' => string 'O' (length=1) Here's the $ediLine dump again: array 0 => string 'DTM' (length=3) 1 => string '007' (length=3) 2 => string '20110413' (length= array 0 => string 'PID' (length=3) 1 => string 'F' (length=1) 2 => string 'TRN' (length=3) 3 => string '' (length=0) 4 => string '' (length=0) 5 => string 'LAKE TAHOE 12FT' (length=15) array 0 => string 'PID' (length=3) 1 => string 'F' (length=1) 2 => string 'MAC' (length=3) 3 => string '' (length=0) 4 => string '' (length=0) 5 => string 'CARINDR' (length=7) array 0 => string 'MEA' (length=3) 1 => string '' (length=0) 2 => string 'LN' (length=2) 3 => string '125.0' (length=5) 4 => string 'FT' (length=2) array 0 => string 'MEA' (length=3) 1 => string '' (length=0) 2 => string 'WD' (length=2) 3 => string '12.0' (length=4) 4 => string 'FT' (length=2) array 0 => string 'MEA' (length=3) 1 => string '' (length=0) 2 => string 'SW' (length=2) 3 => string '0.333' (length=5) 4 => string 'FP' (length=2) array 0 => string 'CTP' (length=3) 1 => string '' (length=0) 2 => string 'LPR' (length=3) 3 => string '10.990' (length=6) 4 => string '' (length=0) 5 => string 'SY' (length=2) 6 => string '' (length=0) 7 => string '' (length=0) 8 => string '' (length=0) 9 => string 'ST' (length=2) array 0 => string 'CTP' (length=3) 1 => string '' (length=0) 2 => string 'LPR' (length=3) 3 => string '10.990' (length=6) 4 => string '' (length=0) 5 => string 'SY' (length=2) 6 => string '' (length=0) 7 => string '' (length=0) 8 => string '' (length=0) 9 => string 'CT' (length=2) array 0 => string 'SLN' (length=3) 1 => string '1' (length=1) 2 => string '' (length=0) 3 => string 'O' (length=1) 4 => string '' (length=0) 5 => string '' (length=0) 6 => string '' (length=0) 7 => string '' (length=0) 8 => string '' (length=0) 9 => string 'SK' (length=2) 10 => string 'RKDAB408001' (length=11) 11 => string '' (length=0) 12 => string '' (length=0) 13 => string '' (length=0) 14 => string '' (length=0) 15 => string 'ST' (length=2) 16 => string 'A08' (length=3) array 0 => string 'PID' (length=3) 1 => string 'F' (length=1) 2 => string '73' (length=2) 3 => string '' (length=0) 4 => string '' (length=0) 5 => string 'LIGHTHOUSE' (length=10) array 0 => string 'PID' (length=3) 1 => string 'F' (length=1) 2 => string '35' (length=2) 3 => string '' (length=0) 4 => string '' (length=0) 5 => string '001' (length=3) array 0 => string 'SLN' (length=3) 1 => string '2' (length=1) 2 => string '' (length=0) 3 => string 'O' (length=1) 4 => string '' (length=0) 5 => string '' (length=0) 6 => string '' (length=0) 7 => string '' (length=0) 8 => string '' (length=0) 9 => string 'SK' (length=2) 10 => string 'RKDAB408002' (length=11) 11 => string '' (length=0) 12 => string '' (length=0) 13 => string '' (length=0) 14 => string '' (length=0) 15 => string 'ST' (length=2) 16 => string 'A08' (length=3) array 0 => string 'PID' (length=3) 1 => string 'F' (length=1) 2 => string '73' (length=2) 3 => string '' (length=0) 4 => string '' (length=0) 5 => string 'COOKIE DOUGH' (length=12) array 0 => string 'PID' (length=3) 1 => string 'F' (length=1) 2 => string '35' (length=2) 3 => string '' (length=0) 4 => string '' (length=0) 5 => string '002' (length=3) array 0 => string 'SLN' (length=3) 1 => string '3' (length=1) 2 => string '' (length=0) 3 => string 'O' (length=1) 4 => string '' (length=0) 5 => string '' (length=0) 6 => string '' (length=0) 7 => string '' (length=0) 8 => string '' (length=0) 9 => string 'SK' (length=2) 10 => string 'RKDAB408003' (length=11) 11 => string '' (length=0) 12 => string '' (length=0) 13 => string '' (length=0) 14 => string '' (length=0) 15 => string 'ST' (length=2) 16 => string 'A08' (length=3) array 0 => string 'PID' (length=3) 1 => string 'F' (length=1) 2 => string '73' (length=2) 3 => string '' (length=0) 4 => string '' (length=0) 5 => string 'WOOD SAGE' (length=9) array 0 => string 'PID' (length=3) 1 => string 'F' (length=1) 2 => string '35' (length=2) 3 => string '' (length=0) 4 => string '' (length=0) 5 => string '003' (length=3) array 0 => string 'SLN' (length=3) 1 => string '4' (length=1) 2 => string '' (length=0) 3 => string 'O' (length=1) 4 => string '' (length=0) 5 => string '' (length=0) 6 => string '' (length=0) 7 => string '' (length=0) 8 => string '' (length=0) 9 => string 'SK' (length=2) 10 => string 'RKDAB408004' (length=11) 11 => string '' (length=0) 12 => string '' (length=0) 13 => string '' (length=0) 14 => string '' (length=0) 15 => string 'ST' (length=2) 16 => string 'A08' (length=3) array 0 => string 'PID' (length=3) 1 => string 'F' (length=1) 2 => string '73' (length=2) 3 => string '' (length=0) 4 => string '' (length=0) 5 => string 'CAFÉ LATTE' (length=10) array 0 => string 'PID' (length=3) 1 => string 'F' (length=1) 2 => string '35' (length=2) 3 => string '' (length=0) 4 => string '' (length=0) 5 => string '004' (length=3) array 0 => string 'DTM' (length=3) 1 => string '007' (length=3) 2 => string '20110413' (length= array 0 => string 'PID' (length=3) 1 => string 'F' (length=1) 2 => string 'TRN' (length=3) 3 => string '' (length=0) 4 => string '' (length=0) 5 => string 'RATIO 12FT' (length=10) array 0 => string 'PID' (length=3) 1 => string 'F' (length=1) 2 => string 'MAC' (length=3) 3 => string '' (length=0) 4 => string '' (length=0) 5 => string 'CARINDC' (length=7) array 0 => string 'MEA' (length=3) 1 => string '' (length=0) 2 => string 'LN' (length=2) 3 => string '125.0' (length=5) 4 => string 'FT' (length=2) array 0 => string 'MEA' (length=3) 1 => string '' (length=0) 2 => string 'WD' (length=2) 3 => string '12.0' (length=4) 4 => string 'FT' (length=2) array 0 => string 'MEA' (length=3) 1 => string '' (length=0) 2 => string 'SW' (length=2) 3 => string '0.421' (length=5) 4 => string 'FP' (length=2) array 0 => string 'CTP' (length=3) 1 => string '' (length=0) 2 => string 'LPR' (length=3) 3 => string '9.790' (length=5) 4 => string '' (length=0) 5 => string 'SY' (length=2) 6 => string '' (length=0) 7 => string '' (length=0) 8 => string '' (length=0) 9 => string 'ST' (length=2) array 0 => string 'CTP' (length=3) 1 => string '' (length=0) 2 => string 'LPR' (length=3) 3 => string '10.490' (length=6) 4 => string '' (length=0) 5 => string 'SY' (length=2) 6 => string '' (length=0) 7 => string '' (length=0) 8 => string '' (length=0) 9 => string 'CT' (length=2) array 0 => string 'SLN' (length=3) 1 => string '1' (length=1) 2 => string '' (length=0) 3 => string 'O' (length=1) 4 => string '' (length=0) 5 => string '' (length=0) 6 => string '' (length=0) 7 => string '' (length=0) 8 => string '' (length=0) 9 => string 'SK' (length=2) 10 => string 'RKDA1010255' (length=11) 11 => string '' (length=0) 12 => string '' (length=0) 13 => string '' (length=0) 14 => string '' (length=0) 15 => string 'ST' (length=2) 16 => string 'A10' (length=3) array 0 => string 'PID' (length=3) 1 => string 'F' (length=1) 2 => string '73' (length=2) 3 => string '' (length=0) 4 => string '' (length=0) 5 => string 'PROPORTION' (length=10) array 0 => string 'PID' (length=3) 1 => string 'F' (length=1) 2 => string '35' (length=2) 3 => string '' (length=0) 4 => string '' (length=0) 5 => string '10255' (length=5) array 0 => string 'SLN' (length=3) 1 => string '2' (length=1) 2 => string '' (length=0) 3 => string 'O' (length=1) 4 => string '' (length=0) 5 => string '' (length=0) 6 => string '' (length=0) 7 => string '' (length=0) 8 => string '' (length=0) 9 => string 'SK' (length=2) 10 => string 'RKDA1010351' (length=11) 11 => string '' (length=0) 12 => string '' (length=0) 13 => string '' (length=0) 14 => string '' (length=0) 15 => string 'ST' (length=2) 16 => string 'A10' (length=3) array 0 => string 'PID' (length=3) 1 => string 'F' (length=1) 2 => string '73' (length=2) 3 => string '' (length=0) 4 => string '' (length=0) 5 => string 'EQUATION' (length= array 0 => string 'PID' (length=3) 1 => string 'F' (length=1) 2 => string '35' (length=2) 3 => string '' (length=0) 4 => string '' (length=0) 5 => string '10351' (length=5) array 0 => string 'SLN' (length=3) 1 => string '3' (length=1) 2 => string '' (length=0) 3 => string 'O' (length=1) 4 => string '' (length=0) 5 => string '' (length=0) 6 => string '' (length=0) 7 => string '' (length=0) 8 => string '' (length=0) 9 => string 'SK' (length=2) 10 => string 'RKDA1010356' (length=11) 11 => string '' (length=0) 12 => string '' (length=0) 13 => string '' (length=0) 14 => string '' (length=0) 15 => string 'ST' (length=2) 16 => string 'A10' (length=3) array 0 => string 'PID' (length=3) 1 => string 'F' (length=1) 2 => string '73' (length=2) 3 => string '' (length=0) 4 => string '' (length=0) 5 => string 'QUOTA' (length=5) array 0 => string 'PID' (length=3) 1 => string 'F' (length=1) 2 => string '35' (length=2) 3 => string '' (length=0) 4 => string '' (length=0) 5 => string '10356' (length=5) array 0 => string 'SLN' (length=3) 1 => string '4' (length=1) 2 => string '' (length=0) 3 => string 'O' (length=1) 4 => string '' (length=0) 5 => string '' (length=0) 6 => string '' (length=0) 7 => string '' (length=0) 8 => string '' (length=0) 9 => string 'SK' (length=2) 10 => string 'RKDA1010451' (length=11) 11 => string '' (length=0) 12 => string '' (length=0) 13 => string '' (length=0) 14 => string '' (length=0) 15 => string 'ST' (length=2) 16 => string 'A10' (length=3) array 0 => string 'PID' (length=3) 1 => string 'F' (length=1) 2 => string '73' (length=2) 3 => string '' (length=0) 4 => string '' (length=0) 5 => string 'RATE' (length=4) array 0 => string 'PID' (length=3) 1 => string 'F' (length=1) 2 => string '35' (length=2) 3 => string '' (length=0) 4 => string '' (length=0) 5 => string '10451' (length=5) array 0 => string 'SLN' (length=3) 1 => string '5' (length=1) 2 => string '' (length=0) 3 => string 'O' (length=1) 4 => string '' (length=0) 5 => string '' (length=0) 6 => string '' (length=0) 7 => string '' (length=0) 8 => string '' (length=0) 9 => string 'SK' (length=2) 10 => string 'RKDA1010455' (length=11) 11 => string '' (length=0) 12 => string '' (length=0) 13 => string '' (length=0) 14 => string '' (length=0) 15 => string 'ST' (length=2) 16 => string 'A10' (length=3) array 0 => string 'PID' (length=3) 1 => string 'F' (length=1) 2 => string '73' (length=2) 3 => string '' (length=0) 4 => string '' (length=0) 5 => string 'FRACTION' (length= array 0 => string 'PID' (length=3) 1 => string 'F' (length=1) 2 => string '35' (length=2) 3 => string '' (length=0) 4 => string '' (length=0) 5 => string '10455' (length=5) array 0 => string 'SLN' (length=3) 1 => string '6' (length=1) 2 => string '' (length=0) 3 => string 'O' (length=1) 4 => string '' (length=0) 5 => string '' (length=0) 6 => string '' (length=0) 7 => string '' (length=0) 8 => string '' (length=0) 9 => string 'SK' (length=2) 10 => string 'RKDA1010458' (length=11) 11 => string '' (length=0) 12 => string '' (length=0) 13 => string '' (length=0) 14 => string '' (length=0) 15 => string 'ST' (length=2) 16 => string 'A10' (length=3) array 0 => string 'PID' (length=3) 1 => string 'F' (length=1) 2 => string '73' (length=2) 3 => string '' (length=0) 4 => string '' (length=0) 5 => string 'PERCENTAGE' (length=10) array 0 => string 'PID' (length=3) 1 => string 'F' (length=1) 2 => string '35' (length=2) 3 => string '' (length=0) 4 => string '' (length=0) 5 => string '10458' (length=5) array 0 => string 'SLN' (length=3) 1 => string '7' (length=1) 2 => string '' (length=0) 3 => string 'O' (length=1) 4 => string '' (length=0) 5 => string '' (length=0) 6 => string '' (length=0) 7 => string '' (length=0) 8 => string '' (length=0) 9 => string 'SK' (length=2) 10 => string 'RKDA1010555' (length=11) 11 => string '' (length=0) 12 => string '' (length=0) 13 => string '' (length=0) 14 => string '' (length=0) 15 => string 'ST' (length=2) 16 => string 'A10' (length=3) array 0 => string 'PID' (length=3) 1 => string 'F' (length=1) 2 => string '73' (length=2) 3 => string '' (length=0) 4 => string '' (length=0) 5 => string 'DIVISION' (length= array 0 => string 'PID' (length=3) 1 => string 'F' (length=1) 2 => string '35' (length=2) 3 => string '' (length=0) 4 => string '' (length=0) 5 => string '10555' (length=5) array 0 => string 'SLN' (length=3) 1 => string '8' (length=1) 2 => string '' (length=0) 3 => string 'O' (length=1) 4 => string '' (length=0) 5 => string '' (length=0) 6 => string '' (length=0) 7 => string '' (length=0) 8 => string '' (length=0) 9 => string 'SK' (length=2) 10 => string 'RKDA1010556' (length=11) 11 => string '' (length=0) 12 => string '' (length=0) 13 => string '' (length=0) 14 => string '' (length=0) 15 => string 'ST' (length=2) 16 => string 'A10' (length=3) array 0 => string 'PID' (length=3) 1 => string 'F' (length=1) 2 => string '73' (length=2) 3 => string '' (length=0) 4 => string '' (length=0) 5 => string 'STANDARD' (length= array 0 => string 'PID' (length=3) 1 => string 'F' (length=1) 2 => string '35' (length=2) 3 => string '' (length=0) 4 => string '' (length=0) 5 => string '10556' (length=5) array 0 => string 'SLN' (length=3) 1 => string '9' (length=1) 2 => string '' (length=0) 3 => string 'O' (length=1) 4 => string '' (length=0) 5 => string '' (length=0) 6 => string '' (length=0) 7 => string '' (length=0) 8 => string '' (length=0) 9 => string 'SK' (length=2) 10 => string 'RKDA1010751' (length=11) 11 => string '' (length=0) 12 => string '' (length=0) 13 => string '' (length=0) 14 => string '' (length=0) 15 => string 'ST' (length=2) 16 => string 'A10' (length=3) array 0 => string 'PID' (length=3) 1 => string 'F' (length=1) 2 => string '73' (length=2) 3 => string '' (length=0) 4 => string '' (length=0) 5 => string 'QUALITY' (length=7) array 0 => string 'PID' (length=3) 1 => string 'F' (length=1) 2 => string '35' (length=2) 3 => string '' (length=0) 4 => string '' (length=0) 5 => string '10751' (length=5) array 0 => string 'SLN' (length=3) 1 => string '10' (length=2) 2 => string '' (length=0) 3 => string 'O' (length=1) 4 => string '' (length=0) 5 => string '' (length=0) 6 => string '' (length=0) 7 => string '' (length=0) 8 => string '' (length=0) 9 => string 'SK' (length=2) 10 => string 'RKDA1010752' (length=11) 11 => string '' (length=0) 12 => string '' (length=0) 13 => string '' (length=0) 14 => string '' (length=0) 15 => string 'ST' (length=2) 16 => string 'A10' (length=3) array 0 => string 'PID' (length=3) 1 => string 'F' (length=1) 2 => string '73' (length=2) 3 => string '' (length=0) 4 => string '' (length=0) 5 => string 'SCALE' (length=5) array 0 => string 'PID' (length=3) 1 => string 'F' (length=1) 2 => string '35' (length=2) 3 => string '' (length=0) 4 => string '' (length=0) 5 => string '10752' (length=5) array 0 => string 'SLN' (length=3) 1 => string '11' (length=2) 2 => string '' (length=0) 3 => string 'O' (length=1) 4 => string '' (length=0) 5 => string '' (length=0) 6 => string '' (length=0) 7 => string '' (length=0) 8 => string '' (length=0) 9 => string 'SK' (length=2) 10 => string 'RKDA1010755' (length=11) 11 => string '' (length=0) 12 => string '' (length=0) 13 => string '' (length=0) 14 => string '' (length=0) 15 => string 'ST' (length=2) 16 => string 'A10' (length=3) array 0 => string 'PID' (length=3) 1 => string 'F' (length=1) 2 => string '73' (length=2) 3 => string '' (length=0) 4 => string '' (length=0) 5 => string 'FORMULA' (length=7) array 0 => string 'PID' (length=3) 1 => string 'F' (length=1) 2 => string '35' (length=2) 3 => string '' (length=0) 4 => string '' (length=0) 5 => string '10755' (length=5) array 0 => string 'SLN' (length=3) 1 => string '12' (length=2) 2 => string '' (length=0) 3 => string 'O' (length=1) 4 => string '' (length=0) 5 => string '' (length=0) 6 => string '' (length=0) 7 => string '' (length=0) 8 => string '' (length=0) 9 => string 'SK' (length=2) 10 => string 'RKDA1010756' (length=11) 11 => string '' (length=0) 12 => string '' (length=0) 13 => string '' (length=0) 14 => string '' (length=0) 15 => string 'ST' (length=2) 16 => string 'A10' (length=3) array 0 => string 'PID' (length=3) 1 => string 'F' (length=1) 2 => string '73' (length=2) 3 => string '' (length=0) 4 => string '' (length=0) 5 => string 'MEASUREMENT' (length=11) array 0 => string 'PID' (length=3) 1 => string 'F' (length=1) 2 => string '35' (length=2) 3 => string '' (length=0) 4 => string '' (length=0) 5 => string '10756' (length=5) Quote Link to comment https://forums.phpfreaks.com/topic/234879-much-needed-help-with-arrayed-data/#findComment-1207975 Share on other sites More sharing options...
viviosoft Posted April 29, 2011 Author Share Posted April 29, 2011 I may have been a bit premature on my last post. Let me study this a bit before I respond and give you a final analysis. Thanks again. Quote Link to comment https://forums.phpfreaks.com/topic/234879-much-needed-help-with-arrayed-data/#findComment-1207981 Share on other sites More sharing options...
btherl Posted April 29, 2011 Share Posted April 29, 2011 Based on that dump, the SLN code should be fetching index 10, not index 3 as I had it. Hmm, do you have multiple SLN inside a single DTM? If that's the case then the code I posted is not correct, and you will need to store an item (aka output row) for each SLN. For prices, I'm guessing those are the CTP lines? Can you distinguish which is price1 and which is price2 by using the final element, which is either ST or CT? Quote Link to comment https://forums.phpfreaks.com/topic/234879-much-needed-help-with-arrayed-data/#findComment-1207983 Share on other sites More sharing options...
viviosoft Posted April 29, 2011 Author Share Posted April 29, 2011 First, thanks again for helping with this. Based on that dump, the SLN code should be fetching index 10, not index 3 as I had it. Yeah, I saw what you were doing here Do you have multiple SLN inside a single DTM? They sure are. So would the code change completely? For prices, I'm guessing those are the CTP lines? Can you distinguish which is price1 and which is price2 by using the final element, which is either ST or CT? You are absolutely correct! I would distinguish price1 and price2 using ST and CT. It think we are on to something here... man, I'm so glad you are understanding what I'm after here! Thanks again! Quote Link to comment https://forums.phpfreaks.com/topic/234879-much-needed-help-with-arrayed-data/#findComment-1207991 Share on other sites More sharing options...
btherl Posted April 29, 2011 Share Posted April 29, 2011 It won't change the code completely. It just changes the condition for adding an element into the $items array. Here's what I think the algorithm should be: For each line: If line starts with DTM, clear all data If line starts with CTP, check if it's price1 or price2 and set $price1 or $price2 accordingly If line starts with SLN, store the "RK..." piece in a variable, such as $sku If line starts with PID and index 2 is "73", store the colour (index 5) in a variable $colour, and store all the current info ($sku, $price1, $price2, $colour) into $items[], eg $items[] = array('sku' => $sku, 'price1' => $price1, 'price2' => $price2, 'colour' => $colour); End for each. Actually that is simpler than my original code. Then after all that, you can loop through $items and store each item to the database. This relies on the CTP and SLN lines always being before the PID lines, which seems to be the case. Quote Link to comment https://forums.phpfreaks.com/topic/234879-much-needed-help-with-arrayed-data/#findComment-1208003 Share on other sites More sharing options...
viviosoft Posted April 30, 2011 Author Share Posted April 30, 2011 Hello btherl, This is what I ended up with. It works great and is exactly what I was after. However, I was just wondering if this is the same algorithm you had in mind? Or if you can think of a "better" or more efficient way of handling this? Man, I can't thank you enough for the help you provided!! <?php if ($ediLine[0] == 'SLN') { # New item. Check if we need to store the old one if ($cur_item !== null) { $items[] = array( 'dateUpdated' => $date, 'styleNum' => $styleNum, 'mfgr' => $mfgr, 'sku' => $sku, 'color' => $color, 'rollPrice' => $price1, 'cutPrice' => $price2, 'length' => $length, 'width' => $width, 'pattern' => $pattern ); } $cur_item['SLN'] = $ediLine[10]; $sku = $cur_item['SLN']; # Capture SKU number. } elseif ($ediLine[0] == 'DTM') { $date = $ediLine[2]; # Capture Color } elseif ($ediLine[0] == 'LIN') { $mfgr = $ediLine[15]; # Capture Manufacture $styleNum = $ediLine[7]; # Capture Style Number - This will be used to ID each product for updating (Ref) } elseif ($ediLine[2] == '73') { $color = $ediLine[5]; # Capture Color } elseif ($ediLine[9] == 'ST') { $price1 = $ediLine[3]; # Capture the first price for each SKU } elseif ($ediLine[9] == 'CT') { $price2 = $ediLine[3]; # Capture the second price for each SKU } elseif ($ediLine[2] == 'LN') { $length = $ediLine[3] . $ediLine[4]; # Capture Length } elseif ($ediLine[2] == 'WD') { $width = $ediLine[3] . ' ' . $ediLine[4]; # Capture Width } elseif ($ediLine[2] == 'NU') { $pattern = $ediLine[3] . ' ' . $ediLine[4]; # Capture Pattern } } // End foreach loop ?> Here's what the output looks like: array 0 => array 'dateUpdated' => string '20110417' (length= 'styleNum' => string 'A3197' (length=5) 'mfgr' => string 'TIMBERLANE' (length=10) 'sku' => string 'A319797100' (length=10) 'color' => string 'ALPACA' (length=6) 'rollPrice' => string '10.89' (length=5) 'cutPrice' => string '12.42' (length=5) 'length' => string '150.00FT' (length= 'width' => string '12.00 FT' (length= 'pattern' => string '36"W X 36"L SM IN' (length=17) 1 => array 'dateUpdated' => string '20110417' (length= 'styleNum' => string 'A3197' (length=5) 'mfgr' => string 'TIMBERLANE' (length=10) 'sku' => string 'A319797101' (length=10) 'color' => string 'FLAX' (length=4) 'rollPrice' => string '10.89' (length=5) 'cutPrice' => string '12.42' (length=5) 'length' => string '150.00FT' (length= 'width' => string '12.00 FT' (length= 'pattern' => string '36"W X 36"L SM IN' (length=17) 2 => array 'dateUpdated' => string '20110417' (length= 'styleNum' => string 'A3197' (length=5) 'mfgr' => string 'TIMBERLANE' (length=10) 'sku' => string 'A319797102' (length=10) 'color' => string 'CAFE NOIR' (length=9) 'rollPrice' => string '10.89' (length=5) 'cutPrice' => string '12.42' (length=5) 'length' => string '150.00FT' (length= 'width' => string '12.00 FT' (length= 'pattern' => string '36"W X 36"L SM IN' (length=17) 3 => array 'dateUpdated' => string '20110417' (length= 'styleNum' => string 'A3197' (length=5) 'mfgr' => string 'TIMBERLANE' (length=10) 'sku' => string 'A319797103' (length=10) 'color' => string 'MINK' (length=4) 'rollPrice' => string '10.89' (length=5) 'cutPrice' => string '12.42' (length=5) 'length' => string '150.00FT' (length= 'width' => string '12.00 FT' (length= 'pattern' => string '36"W X 36"L SM IN' (length=17) Quote Link to comment https://forums.phpfreaks.com/topic/234879-much-needed-help-with-arrayed-data/#findComment-1208509 Share on other sites More sharing options...
btherl Posted May 2, 2011 Share Posted May 2, 2011 Yes that's the algorithm I was describing. The differences being that you store more data, and you use the SLN line rather than PID to tell when to put something into $items. Congratulations on getting it working Quote Link to comment https://forums.phpfreaks.com/topic/234879-much-needed-help-with-arrayed-data/#findComment-1209293 Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.