Olika sättt att korta ned ett IF-statement i PHP
Hej!
Är ganska ny på PHP men kände ändå att det vore kul att kunna lite mer om, så har börjat laborera lite bara för att lära mig.
Försöker mig på att göra någon form av enkel konverterare mellan dataenheter (Kilobit till Megabyte osv.) och har kommit fram till nedanstående kod, som visserligen fungerar. Däremot känns det som att det kanske finns smidigare sätt att skriva ut allt på?
Det är alltså en superenkel konverterare där man skriver in ett numeriskt värde i en ruta (t.ex) 10. Därefter väljer man kanske Megabyte i dropdown-listan (from) och kanske Gigabyte i den andra listan (to). Beroende på vilka alternativ man väljer används sedan en viss uträkning för att få det inskrivna talet att konverteras korrekt.
Inser att jag kan använda "elseif" istället för en massa if för att få loopen att sluta när något stämmer. Dock kommer det oavsett bli en himla massa IF-satser att skriva ut för att täcka alla möjliga konverteringsmöjligheter. Finns det någon annan PHP-teknik annat än IF för att få det lite mer kompakt? Eller ska man skriva på något mer kompakt sätt?
Som sagt, ganska ny på PHP. Men det var sjukt kul så vill gärna lär mig mera
Koden är inte färdig på något sätt, så bortse gärna från de faktiska uträkningarna som säkert inte är korrekta ännu!
<?php
// Om knappen tryckts ned
if(isset($_POST['submit']))
{
// Kolla så det är ett nummer som skrivits in
if(is_numeric($_POST['number1']))
{
if($_POST['from'] == $_POST['to']) /* If both are the same */
{
$total = $_POST['number1'] * '1';
}
if(($_POST['from'] == 'kilobit') && ($_POST['to'] == 'kilobyte'))
{
$total = $_POST['number1'] * '0.125';
}
if(($_POST['from'] == 'kilobit') && ($_POST['to'] == 'megabyte'))
{
$total = $_POST['number1'] * '0.000125';
}
if(($_POST['from'] == 'kilobit') && ($_POST['to'] == 'gigabyte'))
{
$total = $_POST['number1'] * '0.000000125';
}
if(($_POST['from'] == 'kilobit') && ($_POST['to'] == 'terabyte'))
{
$total = $_POST['number1'] * '0.000000000125';
}
if(($_POST['from'] == 'kilobyte') && ($_POST['to'] == 'kilobit'))
{
$total = $_POST['number1'] * '8000';
}
if(($_POST['from'] == 'megabit') && ($_POST['to'] == 'megabyte'))
{
$total = $_POST['number1'] * '0.125';
}
if(($_POST['from'] == 'megabyte') && ($_POST['to'] == 'megabit'))
{
$total = $_POST['number1'] * '8';
}
// Skriv ut resultatet
echo "<h1>{$_POST['number1']} {$_POST['from']} är {$total} {$_POST['to']}</h1>";
} else {
// Om det inte är ett tal som skrivits in
echo 'Du får bara skriva siffror';
}
}
?>