我有一些数据,是的,数据。这些数据来自MySQL查询,它总是包含4个项目。我想将这些数据缓存在一个数组表中,以便稍后在网页中使用,但我希望保留查询中的键,并将多个数组中的每个分组分开。但是,为了节省每次我想要查找给定数据组时遍历数组的时间,我想调用第一个数组的键与ID键相同,ID键始终是每四个项中的第一个键。
我正在使用此代码:
function mysql_fetch_full_result_array($result)
{
$table_result=array();
$r=0;
while($row = mysql_fetch_assoc($result)){
$arr_row=array();
$c=0;
while ($c < mysql_num_fields($result)) {
$col = mysql_fetch_field($result, $c);
$arr_row[$col -> name] = $row[$col -> name];
$c++;
}
$table_result[$r] = $arr_row;
$r++;
}
return $table_result;
}
我目前正在使用3个唯一身份用户对此进行测试,因此我从查询中获得了三行,此函数中的数据最终采用以下格式:
[0]=>
. . [id] => 1
. . [name] => random name
. . [tel] => random tel
. . [post] => post code data
[1]=>
. . [id] => 34
. . [name] => random name
. . [tel] => random tel
. . [post] => post code data
[2]=>
. . [id] => 56
. . [name] => random name
. . [tel] => random tel
. . [post] => post code data
那么如何改变代码而不是键[0],[1],[2]给我输出:
[1]=>
. . [id] => 1
. . [name] => random name
. . [tel] => random tel
. . [post] => post code data
[34]=>
. . [id] => 34
. . [name] => random name
. . [tel] => random tel
. . [post] => post code data
[56]=>
. . [id] => 56
. . [name] => random name
. . [tel] => random tel
. . [post] => post code data
我不介意主数组键是数字串而不是数字但是我有点卡住了,我尝试将$table_result[$r] = $arr_row;
部分更改为读取$table_result[$result['id']] = $arr_row;
但是只输出一个一个人的阵列。我知道我需要另一个循环,但我很难弄清楚如何编写它。
答案 0 :(得分:0)
$arr_row[(name of ID field in your result)][$col -> name] = $row[$col -> name]
这应该将您的数组键设置为ID,因此它应该分配,例如:
$arr_row[34]['id'] = 34;
$arr_row[34]['name'] = 'name';
$arr_row[34]['tel'] = 'tel';
$arr_row[34]['post'] = 'post';
答案 1 :(得分:0)
更改行:
$table_result[$r] = $arr_row; $r++;
to
$table_result[$arr_row['id']] = $arr_row;
我认为你不再需要$ r了。
答案 2 :(得分:0)
怎么样:
$table_result = array();
$sql = "SELECT id, name, tel, post FROM sometable";
$res = mysql_query($sql);
if (mysql_error()) {
die("MySQL error: " . mysql_error());
}
while($row = mysql_fetch_array($res)) {
$table_result[$row['id']] = $row;
}
如果如你所说,你不介意在每个数组元素中重复ID字段,那么就不需要遍历各个行并提取字段。