0

データベースから返された値を持つ2x2D配列があります。

現在、foreachループを実行しており、戻り値を配列ごとに別のテーブルに配置しています。

例えば:

 <table>
    <tr>
      <td>Auto Bavaria Midrand BMW</td>
      <td>63</td>
      <td>39</td>
    </tr>
    ...
</table>
<table>
<tr>
  <td>Auto Bavaria Midrand BMW</td>
  <td>40</td>
  <td>15</td>
  ...
</tr>
</table>

しかし、私はこの形式で、1つのテーブルだけで値を返す必要があります。

<table>
  <tr>
    <td>Auto Bavaria Midrand BMW</td>
    //the name of the record does not need to be repeated, only the values
    <td>63</td>
    <td>39</td>
    <td>40</td> //values from 2nd array
    <td>15</td> // values from 2nd array
  </tr>
        ...//next record set
</table>

Array
(
    [0] => Array
        (
            [DealerName] => Auto Bavaria Midrand BMW
            [dealersContacted] => 63
            [DealerContact_Y] => 39
            [DealerContact_N] => 15
            [DealerShipId] => 21730
            [DataId] => 23527
        )
     //extra returned records 
)

Array
(
    [0] => Array
        (
            [DealerName] => Auto Bavaria Midrand BMW
            [dealersContacted] => 65
            [DealerContact_Y] => 40
            [DealerContact_N] => 15
            [DealerShipId] => 21730
            [DataId] => 23527
        )

   //extra returned records 
)

私はそれのphp側を行うことができます、私の質問は、配列の必要なビットだけをマージできる配列関数があるかどうかです?私は検索し、ますます混乱しました。

4

1 に答える 1

0

データベースからフェッチするときに配列を作成する方法を変更して、意味のない数値インデックスの代わりに、意味のあるキーを取得する必要があります。DealerName上記の例では、おそらくキーとして使用したいと思うでしょう。そうすれば、アイテムを取得するときに、適切な場所にアイテムを追加するだけです。例:

 while($rows = fetch_from_db($res)) {
    $output[$rows['DealerName']]['dealersContacted'] = $rows['dealersContacted'];
    $output[$rows['DealerName']]['DealerContact_Y']  = $rows['DealerContact_Y'];
    // Add more keys here
 }

そうすれば、両方の結果セットの取得が終了すると、配列は1つだけ残ります。また、例で連絡先のディーラーなど、二重インデックスを処理する方法を計画する必要があります。

于 2013-02-27T09:22:33.390 に答える