就像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