Jump to content

Much needed help with arrayed data


viviosoft

Recommended Posts

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

 

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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)

 

Link to comment
Share on other sites

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?

Link to comment
Share on other sites

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!

 

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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)

Link to comment
Share on other sites

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 :)

Link to comment
Share on other sites

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.