I am building an app with complex data which I use arrays for. Some of the data comes direct from fetchs from a postgresql data base and some comes from calculation and processing.
I initally build the array that holds all this and everything goes along fine.
Later during processing I have the following code. This is one section of my code.
foreach ($this -> detailTables as $key => $detTable) {
foreach ($detTable['columns'] as $key2 => $column) {
if ($column['isID'] == 't') {
$detTable['mainid'] = $column['columnName'];
}
if ($column['lookupTable'] != '') {
$select = array('table' => $column['lookupTable'], 'id' => $column['lookupID'], 'disp' => $column['lookupDisplay']);
$detTable['lookups'][] = $select;
}
}
logw($key . ' mainid 1', $detTable['mainid']);
logw($key.' lookups 1', $detTable['lookups']);
}
foreach ($this -> detailTables as $key => $detTable) {
logw($key . ' mainid 2', $detTable['mainid']);
logw($key.' lookups 2', $detTable['lookups']);
}
Basically I am scanning detailTables for and their columns to determine and set values for mindid and the lookups array
In the second foreach segment I am just logging the values to see if the persist.
My Log file reads as follows.
columns mainid 1 = columnID
array columns lookups 1
array 0
table = tables
id = tableID
disp = tableNametabs mainid 1 = tabID
array tabs lookups 1
array 0
table = tables
id = tableID
disp = tableName
and the output from the second part reads
columns mainid 2
columns lookups 2
tabs mainid 2
tabs lookups 2
I cannot figure out why the two log sections are not identical.
From my understanding of you structure you need to reset the iteration after the first for each through
}
logw($key . ' mainid 1', $detTable['mainid']);
logw($key.' lookups 1', $detTable['lookups']);
}
//reset variables here
foreach ($this -> detailTables as $key => $detTable) {
logw($key . ' mainid 2', $detTable['mainid']);
logw($key.' lookups 2', $detTable['lookups']);
}
$detTable
should be a reference. So you should change first line into
foreach ($this -> detailTables as $key => &$detTable) {