【发布时间】:2013-05-13 14:39:43
【问题描述】:
我有一个数据库,其中每列是一个国家/地区。在此示例中,有 4 个国家/地区(列)和 3 行,尽管每个国家/地区的数量会发生变化,因此需要动态输入。我想规范化每一行,使最小值为 0,最大值为 100,同时保留原始数据库的 4 x 3 数组结构,以便我可以根据请求提取行或列。
最终输出将传递给 Javascript 以图形形式呈现。 我提出的代码正确地对数据进行了规范化,但输出是一个 12 x 1 的长数组,并且列名已被删除。
我想知道是否有人知道我如何为$ScoreNorm 保持与$dataA 的输出相同的结构,两者都在下面显示?
<?php
$conn=mysql_connect("relevant inputs");
if(! $conn )
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("db-name");
$dataArray = "SELECT * FROM data2012"
or die(mysql_error());
$data2012=mysql_query($dataArray, $conn);
if(! $data2012 )
{
die('Could not get data: ' . mysql_error());
}
$ScoreNorm = array();
$dataA = array();
while($row = mysql_fetch_assoc($data2012))
{
$dataA[] = $row;
$max_val = max($row);
$min_val = min($row);
foreach($row as $key => &$dataAitem)
{
$ScoreNorm[] = array((($dataAitem - $min_val)/($max_val - $min_val))*100);
}
}
echo json_encode($dataA) . "<br />";
echo json_encode($ScoreNorm) . "<br />";
echo $dataA[1]['France'];
mysql_close($conn);
?>
echo json_encode($dataA) 的输出是
[{"China":"11.000","Australia":"8.300","France":"12.600","UK":"6.220"},{"China":"2.000","Australia":"1.000","France":"4.000","UK":"5.000"},{"China":"39548.000","Australia":"25487.000","France":"245.000","UK":"2547852.000"}]
echo json_encode($ScoreNorm) 的输出在哪里
[[74.921630094],[32.6018808777],[100],[0],[25],[0],[75],[100],[1.54274187502],[0.990812162158],[0],[100]]
重申一下,我希望$ScoreNorm 维护$dataA format。任何想法都非常感谢。
【问题讨论】:
-
Please, don't use
mysql_*functions in new code。它们不再维护and are officially deprecated。看到red box?改为了解prepared statements,并使用PDO 或MySQLi - this article 将帮助您决定哪个。如果你选择 PDO,here is a good tutorial.
标签: php arrays multiplication