我有这样的数据库
我想创建一个关联数组,这样每个 att_name
值都与其来自 att_value
的可能值相关联:
array('att_name' => array('att_value_1', 'att_value_2', 'att_value_3'))
实现此目标的最佳方法是什么?
最佳答案
虽然通过选择您想要的结果并在 PHP 中迭代它们来创建您想要的数据结构很容易做到这一点,但您可以使用 GROUP_CONCAT()
将一些工作分派(dispatch)给 MySQL。 :
$query = "
SELECT att_name, GROUP_CONCAT(att_value SEPARATOR ',') AS values
FROM table_name
GROUP BY att_name
";
$result = mysql_query($query);
$array = array();
while ($row = mysql_fetch_assoc($result)) {
$array[$row['att_name']] = explode(',', $values);
}
print_r($array);
当然,这只有在您的值永远不会包含您在 MySQL 查询中用于 SEPARATOR
的字符(或字符序列)时才有效,因此更安全的纯 PHP 方法是:
$query = "
SELECT att_name, att_value
FROM table_name
";
$result = mysql_query($query);
$array = array();
while ($row = mysql_fetch_assoc($result)) {
$array[$row['att_name']][] = $row['att_value'];
}
print_r($array);
关于php - 将 mysql 结果输出为形式的数组(列名 => 列名的可能值),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10952828/