我试图通过传递包含字段的数组来从数据库中提取数据。
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"]);
但我显然要密集以使其正常工作。
答案 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)
在没有看到实际输出的情况下无法帮助它。但我认为用
取代你的foreachforeach($fields2 as $key) {
$data[$key] = $row["$key"];
}
可以帮到你。
答案 2 :(得分:-1)
不确定这是否是您的问题,但您应该尝试
$newitem = array("$key" => $row["$key"]);
array_push($data, $newitem);
在那个内在的foreach中。