Array richtig verwenden

Dann muss es so aussehen:
PHP:
$var     = 'BMW';
$pfad    = './images/sig/';
$format  = '.png';

$vars    = array(
  'Pfad'    => $pfad,
  'Eingabe' => $var,
  'Format'  => $format,
);
 
$letters = str_split($vars['Eingabe']);

foreach($letters as $i => $letter) {
  $letters[$i] = $vars['Pfad'] . $letter . $vars['Format'];
}
 
echo '<pre>';
print_r($letters);
echo '</pre>';
 
Mit diesem Code (korrigiert) gibt er mir leider nur den ersten Array (B.png) aus.
Ist ja auch klar... wenn da $j < 1 in deiner for steht, das hatte ich übersehen.
PHP:
$new_array = array();
for ( $j = 0; $j < strlen( $var_array['Eingabe'] ); $j++ )
{
   $new_array[] = $var_array['Pfad'].$var_array['Eingabe'][$j].$var_array['Format'];
}

Gruß
 
@einfach nur crack: Das funktioniert perfekt.

Danke! :)

Edit:

@Raisch: Dein Code funktioniert auch perfekt.
 
Zuletzt bearbeitet:
Hallo. :)

Hat jemand eine Idee wie ich das hier eleganter lösen kann?

PHP:
$var5 = '70CM'; // Aus einem Options-Feld ausgewählt

$f1 = $var5;
$f2 = array("10CM","20CM","30CM","40CM","50CM","60CM","70CM","80CM","90CM","100CM"); // User-Eingabe in CM
$f3 = array("1000","2000","3000","4000","5000","6000","7000","8000","9000","10000"); // Umrechnung auf PX
$mwidth = str_replace($f2, $f3, $f1);

Ich habe extra ein paar "Optionen" ausgelassen da es sonst zu unübersichtlich wäre.
 
PHP:
$var5 = '70CM';
$replace = array(
  '10CM'  =>  1000,
  '20CM'  =>  2000,
  '30CM'  =>  3000,
  '40CM'  =>  4000,
  '50CM'  =>  5000,
  '60CM'  =>  6000,
  '70CM'  =>  7000,
  '80CM'  =>  8000,
  '90CM'  =>  9000,
  '100CM' => 10000,
);
$mwidth = str_replace(array_keys($replace), array_values($replace), $var5);
 
Wow das sieht natürlich ganz anders aus wie mein Code. :)

Danke dafür!

Obwohl 99% aller Codes, von euch super PHP-Experten kommt, habe ich trotzdem das Gefühl immer ein bisschen mehr zu lernen. :)

Gäbe es eigentlich eine Möglichkeit mit einem gegebenen Wert wie z.B. "832" den nächsten kleinsten Array Wert zu ermitteln?

PHP:
$var8 = '832';

$replace = array(
   '1CM' => 100,
   '2CM' => 200,
   '3CM' => 300,
   ...
   ...
   ...
   '9CM' => 900,
   '10CM' => 1000,
   '11CM' => 1100,
   ...
   ...
   ...
);

// Treffer: 832 passt in 9CM
 
Zuletzt bearbeitet:
Ja gibt es.
Hier mal ein Weg wie du es selber machen kannst:

Schreibe eine Funktion get_next_smaller_value($array, $check){ }
$array, das Array in dem gesucht wird,
$check, der Wert zu dem der nächst kleinere gesucht werden soll

1) Sortiere das Array aufsteigend. Siehe asort()

2) Lege eine Variable $last an, die den jeweils letzten Array Schlüssel $key speichern soll (vor der Schleife anlegen)
3) Durchlaufe das Array mit einer foreach($array as $key=>$value) Schleife. Am Ende der Forech Schleife soll der aktuelle Wert $value in $last gespeichert werden.
4)Führe innerhalb der foreach Schleife, vorher, einen Vergleich durch:
--Wenn der aktuelle wert $value größer als der gegebene wert $check ist, ist der vorherige Wert $last dein gesuchter Wert. Dann kannst du den letzten Schlüssel $last aus der Funktion mit return zurück geben.

Die fertige Funktion sollte dann so funktionieren:

PHP:
$var8 = '832'; 

$replace = array( 
   '1CM' => 100, 
   '2CM' => 200, 
   '3CM' => 300, 
   ... 
   ... 
   ... 
   '9CM' => 300, 
   '10CM' => 1000, 
   '11CM' => 1100, 
   ... 
   ... 
   ... 
); 

$key = get_next_smaller_value($replace, $var8); //9CM

Viel Spaß beim Probieren :)
 
Mh.
PHP:
$var8 = 832;

$replace = array(
   '1CM' => 100,
   '2CM' => 200,
   '3CM' => 300,
   '4CM' => 400,
   '5CM' => 500,
   '6CM' => 600,
   '7CM' => 700,
   '8CM' => 800,
   '9CM' => 900,
   '10CM' => 1000,
   '11CM' => 1100,
); 

$return = array_shift(array_filter($replace, function ($value) use ($var8) {
  return ($value > $var8);
}));
 
Dann wirst du wohl selber Hand anlegen müssen (siehe mein Post oben) :P
Keine Sorge, die fertige Funktion ist praktisch nur 6 Zeilen lang (mit Formatierungen 10).
Nur Mut!
 
Zurück