就像this previous question,我要存储在一个PHP阵列一个MySQL柱(而不是按行存储)。但是,我希望数组索引匹配数据库主键的索引。从MySQL柱创建PHP阵列,使用AUTO_INCREMENT列作为索引
例如,对于以下数据库:
ID名称
1乔
2玛丽
9托尼$名称[ '9'] == “托尼”
这样的事情可能吗?
谢谢!
就像this previous question,我要存储在一个PHP阵列一个MySQL柱(而不是按行存储)。但是,我希望数组索引匹配数据库主键的索引。从MySQL柱创建PHP阵列,使用AUTO_INCREMENT列作为索引
例如,对于以下数据库:
ID名称
1乔
2玛丽
9托尼$名称[ '9'] == “托尼”
这样的事情可能吗?
谢谢!
$result = mysql_query($q);
while ($row = mysql_fetch_assoc($result)) {
$array[$row["id"]] = $row["name"];
}
是,
$names = array();
foreach ($rows as $r) {
$names[$r['id']] = $r['name'];
}
包装库可以使这更容易,例如与ADODb:
$array = $db->GetAssoc("select id,name from mytable");
一旦我有我行的结果数组,我用这个方法:
function convertArrayToMap(&$list, $attribute, $use_reference=FALSE) {
$result = array();
for ($i=0; $i < count($list); $i++) {
if ($use_reference) $result[$list[$i][$attribute]] = &$list[$i];
else $result[$list[$i][$attribute]] = $list[$i];
}
return $result;
}
而且方法调用:
$mapOfData = convertArrayToMap($mysql_results, 'ID');
请注意,您需要初始化数组在$ array = array()的while循环之前;或者它会在第一行发出通知。另外,请不要将变量命名为“$ array”。 – 2010-01-15 22:33:32
然后假装它被称为$ foo。 – Randy 2010-01-15 22:35:09
或者可能$乔丹:) – 2010-01-15 22:37:07