在多维数组中使用变量

时间:2013-07-02 03:55:46

标签: php multidimensional-array

我试图通过传递包含字段的数组来从数据库中提取数据。

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"]);但我显然要密集以使其正常工作。

3 个答案:

答案 0 :(得分: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;
}

这将为您提供所需的结果。您需要为每个记录创建一个键控数组,而不是每个字段。

答案 1 :(得分:0)

在没有看到实际输出的情况下无法帮助它。但我认为用

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

可以帮到你。

答案 2 :(得分:-1)

不确定这是否是您的问题,但您应该尝试

$newitem = array("$key" => $row["$key"]);
array_push($data, $newitem);
在那个内在的foreach中。