1

配列を使用する複雑なデータを使用してアプリを構築しています。一部のデータはpostgresqlデータベースからのフェッチから直接取得され、一部は計算と処理から取得されます。

私は最初にこれらすべてを保持するアレイを構築し、すべてがうまくいきます。

後で処理中に、次のコードがあります。これは私のコードの1つのセクションです。

    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']);
    }

基本的に、私はdetailTablesとその列をスキャンして、mindidとlookups配列のを決定および設定しています。

2番目のforeachセグメントでは、値をログに記録して、持続するかどうかを確認しています。

私のログファイルは次のように読み取られます。

列mainid1=columnID
配列列ルックアップ1
 配列0
  テーブル=テーブル
  id=tableID
  disp = tableName

tabs mainid 1=tabID
配列タブルックアップ1
 配列0table
  =テーブル
  id=tableID
  disp = tableName

そして、2番目の部分からの出力は

列mainid2
列ルックアップ2
タブmainid2
タブルックアップ2

2つのログセクションが同一でない理由がわかりません。

4

2 に答える 2

1

あなたの構造についての私の理解から、各スルーの最初の後に反復をリセットする必要があります

    }
    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']);
}
于 2012-04-03T19:36:06.097 に答える
0

$detTable参照する必要があります。したがって、最初の行を次のように変更する必要があります

 foreach ($this -> detailTables as $key => &$detTable) {
于 2012-04-03T19:34:49.030 に答える