首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP 2维数组:根据二维数组的值使用户输入2减去用户输入1

PHP 2维数组:根据二维数组的值使用户输入2减去用户输入1
EN

Stack Overflow用户
提问于 2018-02-22 21:59:42
回答 1查看 357关注 0票数 0

我必须创建一个PHP应用程序来计算两个美国人口普查年之间的人口差异。普查年份和人口将存储在一个二维数组中。应用程序应该计算人口的差异并显示这种差异。如果差异为负值,则显示一条反映人口减少的信息。如果差异为正,则显示一条指示人口增加的消息。如果人口没有变化,则显示一条消息,说明没有人口变化。到目前为止,这就是我所拥有的:

代码语言:javascript
复制
<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帖子处理计算。这是对我没用的地方:

代码语言:javascript
复制
<?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,我把年份与数字联系起来的方式有什么问题吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-02-22 22:52:21

你的变量是同名的,所以它肯定不起作用。这意味着你要把数组和各种各样的东西相乘。想必你是在尝试做这样的事情:

代码语言:javascript
复制
<?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年间,我应该给你们的是:

代码语言:javascript
复制
Array
(
    [percent] => +75.03%
    [diff] => +1307417
)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48937945

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档