我必须创建一个PHP应用程序来计算两个美国人口普查年之间的人口差异。普查年份和人口将存储在一个二维数组中。应用程序应该计算人口的差异并显示这种差异。如果差异为负值,则显示一条反映人口减少的信息。如果差异为正,则显示一条指示人口增加的消息。如果人口没有变化,则显示一条消息,说明没有人口变化。到目前为止,这就是我所拥有的:
<body>
<form action="handle_census.php" method="post">
<p>Year 1: <input type="number" name="value1" step="10" min= "1790" max= "2010" size="5"></p>
<p>Year 2: <input type="number" name="value2" step="10" min= "1790" max= "2010" size="5"></p>
<input type="submit" name="submit" value="submit">
</form>
</div>
</body>
</html>这将处理从1790年开始的用户输入,最大值是2010年。用户选择一年,PHP帖子处理计算。这是对我没用的地方:
<?php
$yearList1 = $_POST['value1'];
$yearList2 = $_POST['value2'];
$yearList1 = array(
array("1790", 3929214),
array("1800", 5236631),
array("1810", 7239881),
$yearList2 = array(
array("1790", 3929214),
array("1800", 5236631),
array("1810", 7239881),
$yearTotal = $yearList2 - $yearList1;
print $yearTotal;
?>为了简单起见,我没有在这里添加所有年份,但是在包含$yearTotal = $yearList2 - $yearList1;的行中出现了一个错误。
因此,当用户选择一年时,它应该通过与年份相关的数字来识别它。例如,如果他们选择1790和1800,那么1800年应该减去1790年,而不是实际年份,与该年相关的数字如下: 5236631 - 3929214,答案应该是1307417,我把年份与数字联系起来的方式有什么问题吗?
发布于 2018-02-22 22:52:21
你的变量是同名的,所以它肯定不起作用。这意味着你要把数组和各种各样的东西相乘。想必你是在尝试做这样的事情:
<?php
# First check these are submitted
if(!empty($_POST['value1']) && !empty($_POST['value2'])) {
# Assign years (you probably want to trim() and check is_numeric() here)
$year_1 = $_POST['value1'];
$year_2 = $_POST['value2'];
# Presumably these are hardcoded otherwise you would isolate using a query
# instead of grabbing all this list in one giant array
$years = array(
array("1790", 3929214),
array("1800", 5236631),
array("1810", 7239881)
);
# Set defaults here
$y1 =
$y2 = 0;
# Loop first array to get value
# If you are doing a query, this part is not relevant
foreach($years as $year) {
# Determine year matches for year 1 and 2
if($year[0] == $year_1) {
$y1 = $year[1];
}
if($year[0] == $year_2) {
$y2 = $year[1];
}
}
# Determine if the years are larger or smaller from year before
$larger = ($y1 > $y2);
# Divide
$total = ($larger)? ($y2/$y1) : ($y1/$y2);
# Write the percentage with a plus or minus
$percent = (($larger)? '-':'+').round($total*100,2,PHP_ROUND_HALF_UP).'%';
# The difference in numbers
$diff = ($larger)? ($y1 - $y2) : ($y2 - $y1);
# Show both results
print_r(array(
'percent'=>$percent,
'diff'=>(($larger)? '-':'+').$diff
));
}在1790年和1800年间,我应该给你们的是:
Array
(
[percent] => +75.03%
[diff] => +1307417
)https://stackoverflow.com/questions/48937945
复制相似问题