繁体   English   中英

PHP 中的测量转换

[英]Measurement conversions in PHP

我正在尝试做一个 PHP 转换器,它尽可能使用基本和简单的代码来转换测量值(新的)。 我希望这张图片能帮助你理解我正在尝试做的事情:

我创建了一个HTML 文件,其表单如下所示:

<form action="converter.php" method="post">
 <input type="text" name="number">
 <select name="choose">
        <option>Choose</option>
        <option value="meter" id="meter">Meter</option>
        <option value="cm" id="cm">Cm</option>
        <option value="foot" id="fot">Fot</option>
        <option value="inches" id="tum">Tum</option>
<input type="submit" value="Convert!">
</form>

和一个看起来像这样的PHP 文件,它并不多,但是:

<?php    
$number = $_POST['number'];
$choose = $_POST['choose'];

$x = $number;    
echo "$number $choose  <br>";    
?>

Aaaand 我被困住了。 我真的不知道如何在数学上和代码中转换这些值。 如果你给我完整的代码或下一步要做什么的提示,都没有关系,只需要朝着正确的方向推动。

谢谢!

在 php 文件中进行必要的计算。

注意:根据计算进行了编辑,但从未进行过测试。 仔细检查计算部分。

HTML

<script src="//code.jquery.com/jquery-1.11.0.min.js"></script>
<script src="//code.jquery.com/jquery-migrate-1.2.1.min.js"></script>

<script type="text/javascript">
$(document).ready(function () {

    //called when key is pressed in textbox
    $("#number").keypress(function (e) {
     //if the letter is not digit then display error and don\'t type anything
     if (e.which != 8 && e.which != 0 && (e.which < 48 || e.which > 57)) {
               return false;
    }
    });
});
</script>

<form action="converter.php" method="post">
 <input type="text" name="number" id="number">
 <select name="choose">
        <option>Choose</option>
        <option value="meter" id="meter">Meter</option>
        <option value="cm" id="cm">Cm</option>
        <option value="foot" id="fot">Fot</option>
        <option value="inches" id="tum">Tum</option>
<input type="submit" value="Convert!">
</form>

转换器.php

<?php    
$number = isset($_POST['number']) ? $_POST['number'] : 0;
$choose = isset($_POST['choose']) ? $_POST['choose'] : '';

switch ($choose)
{
case 'meter':
    $cm      = $number * 100;
    $foot    = $number * 3.2808;
    $inches  = $number * 39.370;
    $Answer  = 'Meters: '.$number.'<br />'.
               'Cm: '.$cm.'<br />'.
               'Foot: '.$foot.'<br />'.
               'Inches: '.$inches;

break;

case 'cm':
    $meter   = $number / 100;
    $foot    = $number * 0.032808;
    $inches  = $number * 0.39370;
    $Answer  = 'Cm: '.$cm.'<br />'.
               'Meters: '.$number.'<br />'.            
               'Foot: '.$foot.'<br />'.
               'Inches: '.$inches;
break;

case 'foot':
    $meter   = $number / 3.2808;
    $cm      = $number / 0.032808;
    $inches  = $number * 12.000;
    $Answer  = 'Foot: '.$foot.'<br />'.
               'Meters: '.$number.'<br />'.
               'Cm: '.$cm.'<br />'.            
               'Inches: '.$inches;
break;

case 'inches':
    $meter   = $number / 39.370;
    $cm      = $number / 0.39370;
    $foot    = $number / 12.000;
    $Answer  = 'Inches: '.$inches.'<br />'.
               'Foot: '.$foot.'<br />'.
               'Meters: '.$number.'<br />'.
               'Cm: '.$cm;
break;
default:
    $Answer  = '';
break;
}

echo $Answer;
?>

在不知道您的输入单元类型的情况下,您要做的就是猜测。 我的建议是将表单更改为以下代码以简化输入。 然后它是一个快速简单的除法/乘法来获得所需的结果。 这是表单和 php 处理代码的快速代码示例。

还有一些代码要添加到其中,包括额外的转换和快速检查以查看某些值是否已设置,但您应该希望了解它的要点。

<form action="converter.php" method="post">
    <fieldset><legend>Select Your Input Type and Value</legend>
    <input type="number" name="inputNumber" step="any" value="" />
    <select name="inputFormat">
        <optgroup name="Choose">
        <option value="meter" id="meter">Meter</option>
        <option value="cm" id="cm">Cm</option>
        <option value="foot" id="fot">Fot</option>
        <option value="inches" id="tum">Tum</option>
        </optgroup>
    </select>
    </fieldset>

    <fieldset><legend>Select your Output Type</legend>
    <select name="outputFormat">
        <optgroup name="Choose">
        <option value="meter" id="meter">Meter</option>
        <option value="cm" id="cm">Cm</option>
        <option value="foot" id="fot">Fot</option>
        <option value="inches" id="tum">Tum</option>
        </optgroup>
    </select>   
    </fieldset>     

    <input type="submit" name="submitForm" value="Convert!" />
</form>



<?php
$outputNumber=0;
$inputNumber = (float)$_POST['inputNumber'];
$inputFormat = $_POST['inputFormat'];
$outputFormat = $_POST['outputFormat'];

    switch($inputFormat){
    case "meter":

        switch ($outputFormat){
        case "meter": $outputNumber = $inputNumber;break;           //METER TO METER
        case "cm": $outputNumber = $inputNumber*100;break;          //METER TO CM
        case "foot": $outputNumber = $inputNumber*3.2808399;break;  //METER TO FT
        case "inches": $outputNumber = $inputNumber*39.3700787;break;//METER TO INCHES

        }

    break;

    case "cm":

    //ADD CONVERSION SWITCH IN HERE
    break;

    case "foot":

    //ADD CONVERSION SWITCH IN HERE
    break;

    case "inches":

    //ADD CONVERSION SWITCH IN HERE
    break;  
    }


echo $outputNumber;

?>

更简单的一种:

索引.html

<form action="converter.php" method="post">
 <input type="number" name="number" required>
 <select name="choose">
        <option>Choose</option>
        <option value="meter" id="meter">Meter</option>
        <option value="cm" id="cm">Cm</option>
        <option value="foot" id="fot">Fot</option>
        <option value="inches" id="tum">Tum</option>
<input type="submit" value="Convert!">
</form>

转换器.php

<?php
$number = $_POST['number'];
$choose = $_POST['choose'];

$meters = $number / ($choose == 'cm'? 100 : ($choose == 'foot'? 3.28084 : ($choose == 'inches'? 39.3701 : 1))); 

echo "Meters : $meters<br/>";
echo "Cm : ".($meters*100)."<br/>";
echo "Foot : ".($meters*3.28084)."<br/>";
echo "Inches : ".($meters*39.3701)."<br/>";

请同时更新这些类别的 php 代码。 <select name="choose"><option>Choose</option><option value="kg" id="kg">kg</option><option value="liter" id="liter">Liter</option><option value="mililiter" id="mililiter">Mililiter</option></select>

这个问题已经回答了,但为了将来,我写这篇文章是特别为那些将在更大范围内进行 SI 单位转换的人写的。

我写了一个名为 puconverter 的 SI 单位转换 PHP 库,你只需调用一个函数,它就会像这样为你转换它

 <?php
 include "puconverter.php";

echo length_converter($val,"cm", "m"); //this will convert $val in centimetres to its equivalent metres

  ?>

在您使用它来创建 Web 应用程序的 senerio 中:传递的 SI 单位参数将是一个变量,其中包含 HTML 表单中所选单位名称的值,在这种情况下,我们假设该值将是 cm,所以像这样使用:

  if(isset($_POST["submit"])){
 $convertFrom= $_POST["centimeter"];
 $val= $_POST["value"];
//$val is value to convert, $convertFrom is unit of the value to be converted
echo length_converter($val $convertFrom,"m");//returns value in metres
 echo length_converter($val ,$convertFrom,"mm");//returns value in millimetres
 echo length_converter($val ,$convertFrom,"km");//returns value in kilometres
  }
  
 

有关所有其他 SI 单位转换函数的完整文档,请访问库 GitHub 页面: https : //github.com/GeniusGeeek/pu-converter/blob/master/README.md

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM