0

フィールドを含む配列を渡すことで、データベースからデータを取得しようとしています。

browse_fields = array ('id', 'name', 'weight');

関数は次のとおりです。

function browse($id, $fields) {
    $data = array();
    $fields2 = $fields;
    $fields = '`' . implode('`, `', $fields) . '`';
    $query = mysql_query("...");
    if (mysql_num_rows($query) > 0) {
        while ($row = mysql_fetch_assoc($query)) {
            foreach($fields2 as $key) {
                $data[] = array("$key" => $row["$key"]);
            }
        }
    }
    return $data;
}

出力用に配列内の配列が必要です。しかし、配列内の配列内の配列を取得しています。私の問題はここ$data[] = array("$key" => $row["$key"]);にあると思いますが、適切に機能させるには密度が高すぎるようです。

4

3 に答える 3

1

コードは次のようになります。

function browse($id, $fields) {
    $data = array();
    $fields2 = $fields;
    $fields = '`' . implode('`, `', $fields) . '`';
    $query = mysql_query("...");
    if (mysql_num_rows($query) > 0) {
        $rec = array();
        while ($row = mysql_fetch_assoc($query)) {
            foreach($fields2 as $key) {
                $rec[$key] = $row["$key"];
            }
            $data[] = $rec;
        }
    }
    return $data;
}

これにより、望ましい結果が得られます。各フィールドではなく、レコードごとにキー配列を作成する必要があります。

于 2013-07-02T04:03:23.857 に答える
0

実際の出力を見ずにそれを助けることはできません。しかし、foreachを次のように置き換えると思います

foreach($fields2 as $key) {
            $data[$key] = $row["$key"];
        }

あなたを助けることができます。

于 2013-07-02T04:03:45.717 に答える
-1

これがあなたの問題かどうかはわかりませんが、試してみてください

$newitem = array("$key" => $row["$key"]);
array_push($data, $newitem);

その内側のforeach内。

于 2013-07-02T04:02:52.917 に答える