i have array:
array ( [users] => array ( [0] => array ( [column] => email [value] => fskdjhfkjf@mai.com ) [1] => array ( [column] => nickname [value] => dpucci ) ) [social] => array ( [0] => array ( [column] => user_id [value] => opweirpor ) ) ) starting array i'll have build string this:
insert(users, array(email=>fskdjhfkjf@mai.com,nickname=>dpucci) and this:
insert(social, array(user_id=>opweirpor) this doing:
foreach ($tables $table => $queries) { foreach ($queries $query) { $insert .= $query['column'] . '=>' . $query['value'] . ','; } echo 'insert(' . $table . ', array(' . $insert . ')'; } the problem result getting following:
insert(users, array(email=>fskdjhfkjf@mai.com,nickname=>dpucci) and:
insert(social, array(email=>fskdjhfkjf@mai.com, nickname=>dpucci, user_id=>opweirpor) this because variable $insert incremented each new loop , adding results instead ones need each $tables loop.
how can achieve expected result?
because keep appending string same $insert in inner loop, ran many times. clear insert variable after have finished it, i.e. after inner loop. (untested)
foreach ($tables $table => $queries) { foreach ($queries $query) { $insert .= $query['column'] . '=>' . $query['value'] . ','; } echo 'insert(' . $table . ', array(' . $insert . ')'; // add line $insert = ""; } or, put before inner foreach loop, has advantage ensure $insert not polluted previous codes or otherwise uninitialized giving php warnings.
foreach ($tables $table => $queries) { // add line $insert = ""; foreach ($queries $query) { $insert .= $query['column'] . '=>' . $query['value'] . ','; } echo 'insert(' . $table . ', array(' . $insert . ')'; } however, code creates
insert(users, array(email=>fskdjhfkjf@mai.com,nickname=>dpucci,) note comma after dupcci. don't think want. fix this, remove trailing comma substr:
foreach ($tables $table => $queries) { // add line $insert = ""; foreach ($queries $query) { $insert .= $query['column'] . '=>' . $query['value'] . ','; } // add 1 more line here $insert = substr($insert, 0, -1); echo 'insert(' . $table . ', array(' . $insert . ')'; } also, check desired output. seems brackets not balanced , strings unquoted. sure want?
Comments
Post a Comment