0
返回的每一个元素的计数这是我的查询:获得通过MySQL查询
SELECT `Brand`,`Colour`,`Occassion`,`Fabric`,`Type`
FROM `deals`
WHERE `Size`
LIKE '%XS%';
它返回35个结果。现在,我想要的是每个列(品牌,颜色等)的计数,这些列出现在上述结果集中以创建直方图。我不知道如何做到这一点。
任何帮助表示赞赏。
返回的每一个元素的计数这是我的查询:获得通过MySQL查询
SELECT `Brand`,`Colour`,`Occassion`,`Fabric`,`Type`
FROM `deals`
WHERE `Size`
LIKE '%XS%';
它返回35个结果。现在,我想要的是每个列(品牌,颜色等)的计数,这些列出现在上述结果集中以创建直方图。我不知道如何做到这一点。
任何帮助表示赞赏。
我认为理想的结果应该是这样的:
$data = array(
"Brand" => array(brand1 => 1, brand2 => 2),
"Colour" => array(colour1 => 1, colour2 => 2),
"Occassion" => array(Occassion1 => 1, Occassion2 => 2),
);
对于每个子阵列我们可以得出一个直方图。该代码将是这样的:
$query = "
SELECT
`Brand`,`Colour`,`Occassion`,`Fabric`,`Type`
FROM
`deals`
WHERE
`Size` LIKE '%XS%'";
$data = array(
"Brand" => array(),
"Colour" => array(),
"Occassion" => array(),
"Fabric" => array(),
"Type" => array(),
);
if ($result = $mysqli->query($query)) {
/* fetch associative array */
while ($row = $result->fetch_assoc()) {
foreach($row as $key => $value)
{
$data[$key][$value]++;
}
}
/* free result set */
$result->free();
}
或者,我们可以定义里面的foreach $数据子阵,使程序更加灵活:
$data = array();
...
foreach($row as $key => $value)
{
if(!isset($data[$key]))
{
$data[$key] = array();
}
$data[$key][$value]++;
}
...
看起来像一个解决方案。我会试试看看它是否有效。谢谢您的帮助。 –
定义*目前*。不是空的?不是'null'? –
列有一些值,如果没有,则为空。 –
好的,现在定义*值*和*空* – sgroves