0

わかりました..フィールドマップ配列を使用してphpのキー値配列のキー名を再マップしようとしています。事前にマップされた値の大規模なセットを保持する$outRow配列が必要です..$inRow['name1'] = 10$outRow['name_1'] = 10

        $fieldmap=array("name1"=>"name_1","name2"=>"name_2");

          private function mapRow($inRow) {

            $outRow = array();

            foreach($inRow as $key => $value) {

                $outRow[$this->fieldmap[$key]][] = $value;

            }

            return $outRow;

          }  // end mapRow


  public function getListings($inSql) {

    // get data from new table
    $result = mysql_query($inSql);
    if (!result) {
      throw new exception("retsTranslate SQL Error: $inSql");
    }

    while ($row = mysql_fetch_assoc($result)) {

      $outResult[] = $this->mapRow($row);

    }

    return $outResult;

  }  // end getListings

これは機能していません..配列を取得していますが、使用してい$outResult[0][keyname]ます...これが十分に明確であることを願っています:)

4

3 に答える 3

1
$fieldmap=array("name1"=>"name_1","name2"=>"name_2");

  private function mapRow($inRow) {

    $outRow = array();

    foreach($inRow as $key => $value) {

        $outRow[$this->fieldmap[$key]][] = $value;

    }

    return $outRow;

  }  // end mapRow


while ($row = mysql_fetch_assoc($result)) {

  //$outResult[] = $this->mapRow($row);
    $outResult[= $this->mapRow($row);

}

私はあなたのコード行にコメントし、新しいものを追加しました..あなたが問題に言及したことは間違いありません.

于 2013-09-12T18:20:03.137 に答える
0

これを試して:

function mapRow($inRow) {
$outRow = array();

foreach($inRow as $key => $value) {
    $outRow[preg_replace('/\d/', '_$0', $key,1)] = $value;
}
return $outRow;
}
于 2013-09-12T18:07:37.383 に答える
0

キーが値と一致するように配列を構造化できる場合 (以下の例を参照)、PHP array_combine()を使用できます。配列が正しく順序付けられていることを完全に確認する必要があることを知っておいてください。

<?php

    $fieldmap = array( 'name_1', 'name_2', 'name_3' );

    private function mapRow($inRow)
    {
        $outRow = array_combine( $this->fieldmap, $inRow );

        return $outRow;
    }


たとえば、配列が次
array( 'name1' => 10, 'name2' => 20, 'name3' => 30 );

の場合: 新しい結果は次のようになります。
array( 'name_1' => 10, 'name_2' => 20, 'name_3' => 30 );

これが役立つかどうか教えてください。

于 2013-09-12T18:17:09.587 に答える