Zitat:
|
Zitat von Dome
PHP-Code:
$endung = $endung_x[array_count_values ($endung_x)]; # Zeile 19
[b]Warning: Illegal offset type in /usr/*******/thumb.php on line 19
|
Obwohl
St@eff.ens Lösung die richtige (und sehr viel elegantere) Lösung ist, könnte es dich trotzdem interessieren, was hier falsch ist.
1. array_count_values() gibt ein Array zurück. Die Schlüssel sind dann die verschiedenen Werte des ursprünglichen Arrays, die Werte geben an, wie oft sie vorkommen. Zum Beispiel:
PHP-Code:
$x = array(1, 4, 3, 1, 3, 3, 7);
$y = array_count_values($x)
$y sieht dann so aus:
Code:
$y[1] => 2
$y[3] => 3
$y[4] => 1
$y[7] => 1
Um die Zahl der Elemente zu finden, brauchst du count(). In diesem Fall ergibt count($x) die Zahl 7.
2. Du hast nicht berücksichtigt, dass das erste Element nicht den Schlüssel 1 erhält, sondern den Schlüssel 0. Es ist eigentlich nicht wirklich das erste Element, sondern das
nullte. Wenn du dein String explodierst, kommt dabei folgendes raus:
Code:
$endung_x[0] => "Album1/Album2/IMG_4801"
$endung_x[1] => "jpg"
Aber count($endung_x) ergibt 2, weil es zwei Elemente gibt. Das heißt:
Code:
$endung_x[count($endung_x)]
= $endung_x[2]
= nul
Von dem Ergebnis der count()-Funktion musst du 1 subtrahieren:
Code:
$endung_x[count($endung_x)-1]
= $endung_x[2-1]
= $endung_x[1]
= "jpg"