I have this array:
array(122) {
["1AB168820010"]=> array(3) {
["MACHINE_NAME"]=> "L1XP2A"
["FEEDER_SLOT"]=> "114"
["REJECT_RATE"]=> float(0.0394)
["DEFECT_QTY"]=> int(2)
["SOLDER BALL"]=> int(2)
}
["1AB037870031"]=> array(5) {
["MACHINE_NAME"]=> "L2CP7A"
["FEEDER_SLOT"]=> "155"
["REJECT_RATE"]=> float(2.3022)
["DEFECT_QTY"]=> int(39)
["COMPONENT TOMBSTONED"]=> int(31)
["SOLDER BALL"]=> int(2)
["COMPONENT BILLBOARD"]=> int(6)
}
["1AB144890021"]=> array(7) {
["MACHINE_NAME"]=> "L21P3A"
["FEEDER_SLOT"]=> "214"
["REJECT_RATE"]=> float(0.0225)
["DEFECT_QTY"]=> int(8)
["SOLDER INSUFFICIENT "]=> int(2)
["SOLDER BAD"]=> int(2)
["SOLDER BALL"]=> int(2)
["COMPONENT MISSING"]=> int(1)
["COMPONENT BILLBOARD"]=> int(1)
}
["1AB144890033"]=> array(7) {
["MACHINE_NAME"]=> "L1CP7A"
["FEEDER_SLOT"]=> "234"
["REJECT_RATE"]=> float(0.0142)
["DEFECT_QTY"]=> int(7)
["SOLDER INSUFFICIENT "]=> int(1)
["SOLDER BAD"]=> int(1)
["COMPONENT MISSING"]=> int(3)
["COMPONENT SKEW"]=> int(1)
["COMPONENT TOMBSTONED"]=> int(1)
}
#...more
}
I need to loop through the array and create a string from the array output that looks like this but don't know the best way...please help
1AB168820010 ( 0.0394% ) #<-this is the 'REJECT_RATE'
-Machine: L1XP2A
-Feeder: 114
SOLDER BALL ( 100% ) #<-'SOLDER BALL' value (2) divided by 'DEFECT_QTY' (2) * 100
------------------------
1AB037870031 ( 2.3022% )
-Machine: L2CP7A
-Feeder: 155
COMPONENT TOMBSTONED ( 79.48% ) #<- ( 31 / 39 ) * 100
COMPONENT BILLBOARD ( 15.38% ) #<- ( 6 / 39 ) * 100
SOLDER BALL ( 5.12% ) #<- ( 2 / 39 ) * 100
------------------------
1AB144890021 ( 0.0225% )
-Machine: L2IP3A
-Feeder: 214
SOLDER INSUFFICIENT ( 25% )
SOLDER BAD ( 25% )
SOLDER BALL ( 25% )
COMPONENT MISSING ( 12.5% )
COMPONENT BILLBOARD ( 12.5% )
------------------------
1AB144890033 ( 0.0142% )
-Machine: L1CP7A
-Feeder: 234
SOLDER INSUFFICIENT ( 14.3% )
SOLDER BAD ( 14.3% )
COMPONENT MISSING ( 42.8% )
COMPONENT SKEWED ( 14.3% )
COMPONENT TOMBSTONED ( 14.3% )
My main issue I'm not sure how to handle is that I don't know the number of defects (i.e. COMPONENT MISSING, COMPONENT SKEWED, SOLDER BAD) per partnumber, how many defects (and what defects it has) will vary, therefore I can't just hard-code 'COMPONENT MISSING: [some calc]' into my foreach loop....
(Optionally, you can sort the array by its keys: ksort($array);
.)
Next, you iterate over each element and build the string:
$output = '';
foreach ($array as $key => $data) {
$output .= $key . ' ( ' . number_format($data['REJECT_RATE'], 3) . '% )' . "\n";
$output .= ' -Machine: ' . $data['MACHINE_NAME'] . "\n";
$output .= ' -Feeder: ' . $data['FEEDER_SLOT'] . "\n";
$output .= ' SOLDER BALL ( ' . number_format(2 / $data['DEFECT_QTY'] * 100, 0) . '% )'. "\n";
// Add more calculation here…
$output .= "------------------------\n";
}
And finally, you output the string: echo $output;
.