Array richtig verwenden

Ich glaub jetzt hab ichs verstanden :D

PHP:
$var1 = '00CM';
$var2 = '6422';

// Umrechnen von CM in Pixel
$var3=(int)str_ireplace('CM', '00', $var1);

// wenn $var3 0 ist die nächste Pixelbreite aus $var2 berechnen
if($var3===0) $var3=(int)(ceil($var2/100)*100);

echo $var3;
// Ausgabe: 6500

Wenn $var1 zb 75CM wäre ist die Ausgabe in $var3 dann 7500.

Vergiss die Arrays ...
 
Zuletzt bearbeitet:
Wieso wird mein Beitrag eigentlich ständig ignoriert? Wenn du dich daran mal versuchen würdest, könntest du das auf alle deine Beispiele erweitern.

Ich hab es versucht! Ich habe keine Lust mehr mir weisse Seiten als "Resultat" anzuschauen. Ich kann es halt nicht. Schau dir meine Signatur an. ;)

Ich glaub jetzt hab ichs verstanden :D

Ich kann deinen Code ehrlich gesagt nicht nachvollziehen. Was soll denn das mit dem aufrunden? Ich meine ich hätte erwähnt das $var3 auch eine krumme Zahl sein kann oder?

:(

Es ist eigentlich vom Verständnis ganz einfach...

Im Skript wird eine Grafik erstellt. So ziehmlich am Ende wird die Grafik (noch nicht erstellt) schon einmal ausgerechnet. Also die "Breite WÄRE jetzt" in Pixel.

PHP:
$var = '00CM'; // Hat der User jetzt ausgewählt

Berechnung der THEORETISCHEN Grafik... 

$width = '6422'; // Das ist die "Breite WÄRE jetzt" in Pixel

Im nächsten Schritt wird jetzt das passende Hintergrund gewählt. An dieser Stelle wird das Skript durch eine IF-Abfrage in zwei Teile gesplittet. Also entweder oder...

PHP:
if($var == '32CM') { // Meine Abfrage sieht ein bisschen anders aus, ist aber hier jetzt egal...
$masse = array(
  '10CM'  =>  1248,
  '20CM'  =>  2545,
  '32CM'  =>  3596,
  '40CM'  =>  4487,
  '50CM'  =>  5784,
  '60CM'  =>  6325,
  '70CM'  =>  7413,
  '80CM'  =>  8478,
  '90CM'  =>  9321,
);
$mwidth = str_replace(array_keys($masse), array_values($masse), $var); 
}

echo $mwidth;

// Da würde jetzt 3596 stehen und ich wüsste wie Breit die Grafik wird. Ich wüsste also welchen Bilderrahmen der User möchte. Ob es passt oder nicht, spielt erst einmal keine Rolle.

Aber der User hat ja nicht 32CM sondern 00CM ausgewählt... also...

PHP:
if($var == '00CM') {

// An dieser Stelle wird die Variable $width = '6422'; interessant. Denn in dieser Variable steckt die tatsächliche breite drin. Hier also 6422 (was 6422 px bedeuten soll).
Ich muss jetzt herausfinden IN WELCHEN BILDERRAHMEN diese Grafik passt (besser kann ich es nicht ausdrücken).

}

Wenn 10CM, 32CM oder oder oder ausgewählt wurde, muss ich ja NUR herausfinden wie Breit der Bilderrahmen in PX wäre.

10 cm -> 1256 px (Beispiel)

Da hilft mir das Array ungemein.

Aber wenn 00CM ausgewählt wurde, muss ich erst einmal herausfinden die Breit die Grafik wäre (ist kein Problem) und dann muss ich den passenden Bilderrahmen finden. Man steckt ja kein 5cm x 5cm Bild in ein 30cm x 30cm Bilderrahmen rein. Aber ich muss ja wissen welche größen es an Bilderrahmen gibt und wie man da OHNE ARRAYS arbeiten kann, musst du mir bitte erklären.

Als Beispiel wurden 6422 (Pixel) ermittelt. Nun muss ich den Bilderrahmen dazu finden.

Ich hoffe jetzt habe ich es verständlich erklärt.
 
Zuletzt bearbeitet:
Doch irgend wann einmal bestimmt. ;) :D

Aufrunden bringt mir nichts. Nach meinem "Sachverstand" müsste ich richtige Zahl aus einem vorgegebenen Array geholt werden.
 
Ok, ich bin davon aus gegangen das die Werte Linear sind. Dann brauchst du natürlich eine Werteliste. In deinem Fall ein Array, ich würde da aber eine Datenbank nehmen, so kann man besser neue Bilderrahmen einfügen, alte löschen und den richtigen suchen.

In deinem Skript musst du ja nur die Werteliste durchlaufen und prüfen ob die Pixelbreite ausreicht.

PHP:
$masse = array(
  '10CM'  =>  1248,
  '20CM'  =>  2545,
  '32CM'  =>  3596,
  '40CM'  =>  4487,
  '50CM'  =>  5784,
  '60CM'  =>  6325,
  '70CM'  =>  7413,
  '80CM'  =>  8478,
  '90CM'  =>  9321,
);

$width = '6422'; // Das ist die "Breite WÄRE jetzt" in Pixel 
$mwidth=0;
$rahmen='';
foreach ($masse as $k=>$v){
  if($v>$width){
    $mwidth=$v;
    $rahmen=$k;
    break;
  }
}

// $mwidth enthält dann 7413
// $rahmen wäre dann 70CM

So besser?
 
Zuletzt bearbeitet:
Das sieht schon einmal richtig gut aus aber das Ergebnis bei mir ist leider falsch.

Muss das Array, um zu funktionieren, von klein auf Groß gegliedert werden? Denn bei mir ist es aktuell von Groß auf Klein.

Edit:

Mit dem Tipp von Timestamp scheint es jetzt zu funktionieren.

PHP:
asort ($masse);
 
Zuletzt bearbeitet:
Zurück