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 回答