php - Split Array at Repeating Object in Array -


i parsing xml file , creating 2 arrays: 1 of xml tags ($tags), , other values tags ($values). parses, adds tags , values goes, when it's done, implode arrays , put them mysql statement:

$sql = "insert ($tags) value ($values)"; 

this works fine until have repeating tags, , sql statement doesn't work....

is there way find first repeated word in $tags array , split @ word (keeping tags follow it) , split $values array @ same index $tags split, information stays in same order?

so converting this:

insert (amazonorderid,merchantorderid,shipmentid,merchantfulfillmentid,posteddate,amazonorderitemcode,sku,quantity,principal,commission,amazonorderitemcode,sku,quantity,principal,commission,amazonorderitemcode,sku,quantity,principal,commission,fba) value ('1','1','d','a','2015','64','ox','1','18','-2','64','wa','1','23','-2','29','wag','1','49','77','97'); 

into like:

insert (amazonorderid,merchantorderid,shipmentid,merchantfulfillmentid,posteddate,amazonorderitemcode,sku,quantity,principal,commission) values ('1','1','d','a','2015','64','ox','1','18','-2');  insert (amazonorderitemcode,sku,quantity,principal,commission) values ('64','wa','1','23','-2');  insert (amazonorderitemcode,sku,quantity,principal,commission,fba) values ('29','wag','1','49','77','97'); 

thanks in advance!...

i base "something like".. :)

$fields = ['amazonorderid', 'merchantorderid', 'shipmentid', 'merchantfulfillmentid', 'posteddate', 'amazonorderitemcode', 'sku', 'quantity', 'principal', 'commission', 'amazonorderitemcode', 'sku', 'quantity', 'principal', 'commission', 'amazonorderitemcode', 'sku', 'quantity', 'principal', 'commission', 'fba'];  $values = ['1','1','d','a','2015','64','ox','1','18','-2','64','wa','1','23','-2','29','wag','1','49','77','97'];  // added avoid error produced by: `undefined offset` error warning error_reporting(0);  $fields_dup = array();  $values_dup = array();  ($i = 0, $j = 0; $i < count($fields); $i++) {     if (in_array($fields[$i], $fields_dup[$j]))         $j++;      $fields_dup[$j][] = $fields[$i];     $values_dup[$j][] = $values[$i];      // or maybe want add ` , ' make statement like:     // insert table (`field1`, `field2`) values ('value1', 'value2')     //      // $fields_dup[$j][] = "`".$fields[$i]."`";     // $values_dup[$j][] = "'".$values[$i]."'";  }  error_reporting(e_all);  // show produced var_dump($fields_dup); var_dump($values_dup);  // while can construct statement in loop ($i = 0; $i < count($fields_dup); $i++) {     $sql_fields = implode(',', $fields_dup[$i]);     $sql_values = implode(',', $values_dup[$i]);      echo "insert ($sql_fields) values ($sql_values) <br>";   } 

output be:

//var_dump($fields_dup); array (size=3)   0 =>      array (size=10)       0 => string 'amazonorderid' (length=13)       1 => string 'merchantorderid' (length=15)       2 => string 'shipmentid' (length=10)       3 => string 'merchantfulfillmentid' (length=21)       4 => string 'posteddate' (length=10)       5 => string 'amazonorderitemcode' (length=19)       6 => string 'sku' (length=3)       7 => string 'quantity' (length=8)       8 => string 'principal' (length=9)       9 => string 'commission' (length=10)   1 =>      array (size=5)       0 => string 'amazonorderitemcode' (length=19)       1 => string 'sku' (length=3)       2 => string 'quantity' (length=8)       3 => string 'principal' (length=9)       4 => string 'commission' (length=10)   2 =>      array (size=6)       0 => string 'amazonorderitemcode' (length=19)       1 => string 'sku' (length=3)       2 => string 'quantity' (length=8)       3 => string 'principal' (length=9)       4 => string 'commission' (length=10)       5 => string 'fba' (length=3)   // var_dump($values_dup); array (size=3)   0 =>      array (size=10)       0 => string '1' (length=1)       1 => string '1' (length=1)       2 => string 'd' (length=1)       3 => string 'a' (length=1)       4 => string '2015' (length=4)       5 => string '64' (length=2)       6 => string 'ox' (length=2)       7 => string '1' (length=1)       8 => string '18' (length=2)       9 => string '-2' (length=2)   1 =>      array (size=5)       0 => string '64' (length=2)       1 => string 'wa' (length=2)       2 => string '1' (length=1)       3 => string '23' (length=2)       4 => string '-2' (length=2)   2 =>      array (size=6)       0 => string '29' (length=2)       1 => string 'wag' (length=3)       2 => string '1' (length=1)       3 => string '49' (length=2)       4 => string '77' (length=2)       5 => string '97' (length=2)  // last for-statement  insert (amazonorderid,merchantorderid,shipmentid,merchantfulfillmentid,posteddate,amazonorderitemcode,sku,quantity,principal,commission) values (1,1,d,a,2015,64,ox,1,18,-2)   insert (amazonorderitemcode,sku,quantity,principal,commission) values (64,wa,1,23,-2)   insert (amazonorderitemcode,sku,quantity,principal,commission,fba) values (29,wag,1,49,77,97)  

is trying do?

hope helpful, cheers! ;)


Comments