Mappa om spann

PHPportalen Forum Index » PHP Mjukstart
Lägg ett bokmärke på hela tråden
Skapa nytt inlägg   Svara på inlägget
Visa föregående ämne :: Visa nästa ämne  
Startad av: Meddelande
info@aimdesign.se



Medlem i: 3169 dagar
Från: Märsta
Status: Offline



#741481
Inlägg Skrivet: 2017-02-14 23:12      Ämne: Mappa om spann Citera

Jag sitter och försöker för mitt liv förstå hur jag kan mappa om ett spann till ett annat med hjälp av php.

Jag har ett spann som sträcker sig från 1 till 4000 och behöver göra om de värdena till ett spann mellan 1 och 200.

Jag har hittat några lösningar, både rent matematiska och programmeringsspecifika men inget av dem verkar fungera för mig. Vad gör jag för fel? Nedan kan ni se det senaste försöket som inte ändrar ingångsvärdena alls.

KOD:
1:
 
2:
function mapping($value) {
3:
                        $fromLow = 1;
4:
                        $fromHigh = 4000;
5:
                        $toLow = 1;
6:
                        $toHigh = 200;
7:
                        $oldRange = $fromHigh - $fromLow;
8:
                        $newRange = $toHigh - $toLow;
9:
                        $new_value = ((($value - $fromLow) * $newRange) / $oldRange) + $toLow;
10:
                        return  $new_value;
11:
                     }
12:
 
13:
 


Tack på förhand.
 

_________________
På svengelska -> It's not the fart that kills you, it's the smäll
Till toppen på sidan
Visa användarprofil Skicka privat meddelande Besök användarens hemsida
harald_b
Moderator



Medlem i: 3991 dagar
Från: Tavesta
Status: Offline



#741482
Inlägg Skrivet: 2017-02-15 00:14      Ämne: Citera

Vad jag kan se så fungerar din kod.
Hur använder du funktionen?
PHP:
1:
 $ändrat_värde mapping($gammalt_värde); 


Om du vill att själva variabeln som du skickar som parameter skall ändras (vilket jag inte hade rekommenderat) så kan du ändra till:
PHP:
1:
 function mapping(&$value) { //Använd variabelreferens istället för värde, som parameter
2:
                        $fromLow 1;
3:
                        $fromHigh 4000;
4:
                        $toLow 1;
5:
                        $toHigh 200;
6:
                        $oldRange $fromHigh $fromLow;
7:
                        $newRange $toHigh $toLow;
8:
                        //Spara tillbaka det nya värdet i samma variabel
9:
                        $value = ((($value $fromLow) * $newRange) /  $oldRange) + $toLow
10:
                        //Ingen return behövs här
11:
 

_________________
R.r - Ett fritt affärssystem
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
info@aimdesign.se



Medlem i: 3169 dagar
Från: Märsta
Status: Offline



#741520
Inlägg Skrivet: 2017-02-27 18:39      Ämne: Citera

Än så länge har jag bara testat det lite såhär:
KOD:
1:
 
2:
$staple_values = array();
3:
for ($i=0;$i<12;$i++) {
4:
   $staple_values[] = rand(0,4000);
5:
}
6:
sort($staple_values);
7:
$counter = 0;
8:
foreach ($staple_values as $value) {
9:
   $staple_value[$counter] = mapping($value);
10:
   $counter++;
11:
}
12:
print_r($staple_values);
13:
 


Tanken är att det ska påverka höjden på staplarna i ett stapeldiagram helt enkelt och att maxhöjden ska vara 200px på staplarna.
 

_________________
På svengelska -> It's not the fart that kills you, it's the smäll
Till toppen på sidan
Visa användarprofil Skicka privat meddelande Besök användarens hemsida
harald_b
Moderator



Medlem i: 3991 dagar
Från: Tavesta
Status: Offline



#741521
Inlägget är accepterad som det rätta svaret Skrivet: 2017-02-28 14:40      Ämne: Citera

Ja, felet är ett helt annat.
$staple_values och $staple_value är inte samma array.


Ett litet tips.
Det finns ett enklare sätt att få med en räknare i foreach-loopar:
foreach($array as $counter=>$value)
$counter blir då kopplad till arrayens nycklar, snarare än en uppräkning från 0, vilket hade varit en säkrare lösning i ditt fall.
 

_________________
R.r - Ett fritt affärssystem
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
info@aimdesign.se



Medlem i: 3169 dagar
Från: Märsta
Status: Offline



#741522
Inlägg Skrivet: 2017-02-28 19:04      Ämne: Citera

harald_b skrev:
Ja, felet är ett helt annat.
$staple_values och $staple_value är inte samma array.


Ett litet tips.
Det finns ett enklare sätt att få med en räknare i foreach-loopar:
foreach($array as $counter=>$value)
$counter blir då kopplad till arrayens nycklar, snarare än en uppräkning från 0, vilket hade varit en säkrare lösning i ditt fall.


Så dumt! Där hade vi problemet och nu fungerar det. Tack för hjälpen. =)
 

_________________
På svengelska -> It's not the fart that kills you, it's the smäll
Till toppen på sidan
Visa användarprofil Skicka privat meddelande Besök användarens hemsida
Visa tidigare inlägg:   
Skapa nytt inlägg   Svara på inlägget
PHPportalen Forum Index » PHP Mjukstart
Hoppa till:  
Du kan inte skapa nya inlägg i det här forumet
Du kan inte svara på inlägg i det här forumet
Du kan inte ändra dina inlägg i det här forumet
Du kan inte ta bort dina inlägg i det här forumet
Du kan inte rösta i det här forumet
Du kan inte bifoga filer i detta forum
Du kan inte ladda ner filer från detta forum
Kontakta oss på adressen: info@phpportalen.net
Webbplatsen bygger i grunden på phpBB © 2001, 2002 phpBB Group

Modifieringar har senare gjorts i systemet av PHPportalen
Sid och logotypdesign skapad av Daren Jularic