I am querying a SQL database and returning some values. What I have is Field1
and Field2
which come out with a list of dates (There may be up to 200 values/dates eventually). I then reformat the current dates into the desired format.
// While we have valid rows while( $row = sqlsrv_fetch_array($rs, SQLSRV_FETCH_ASSOC)) { //build an array of all fields and their values $outputstring[] = $row; } // for each record, IF the fields exist, reformat the date foreach($outputstring as &$each) { if($each['Field1']) $each['Field1'] = $each['Field1']->format('m-d H:i'); if($each['Field2']) $each['Field2'] = $each['Field2']->format('m-d H:i'); } // Output as JSON echo JSE($outputstring);
What I now want to do is change the names of Field1
and Field2
without modifying the SQL query and before the array is parsed as JSON.
I would normally just modify the SQL with;
Select Field1 as startdate, Field2 as enddate
But this isn’t an option here as the value to be used must come from a translation function.
In the final output, Field1 needs to be displayed as the output of
lang('Field1');
This function delivers the translation of the field names in one of 33 languages depending on what the user selected prior to the output being generated.
I could use something like:
SELECT Field1 as ". lang('Field1') .", Field2 as ". lang('Field2') ."
but would prefer a PHP option that applies the language value to all keys in the array. As mentioned, there may be hundreds of fields in the final version and I don’t really want to hardcode each possible value if it can be avoided.
any ideas?
Advertisement
Answer
If I understand it correctly, can you use this?
$formatted = []; while( $row = sqlsrv_fetch_array($rs, SQLSRV_FETCH_ASSOC)) { foreach($row as $key => $value) { $formatted[lang($key)] = $value->format('m-d H:i'); } } // Output as JSON echo JSE($formatted);