Array elemente bearbeiten...

Darian

Erfahrenes Mitglied
Hallo Leute,

es funktioniert zwar was ich mache, aber es gefällt mir nicht. Ist irgendwie unsauber. Darum wollte ich da nach fragen wie ihr es verbessern würdet.

Wollte nur Pfade die zu Bildern führen, und in einem Array sind. Alles bis auf die Dateinamen abschneiden. Dann wird die URL vorher dran gemacht. Damt ich sie in HTML Code verwenden kann.

Oder könnte ich auch /var/www...usw verwenden?

PHP-Code:
PHP:
$i = 0;
	foreach($files as $array) {
	
		$files[$i] = FOTOS_HOTEL_URL . strrchr($array, "/");
		
		echo $files[$i];
		
		$i++;
	}

Mit array_walk(); hat es nicht so funktioniert. Würdet ihr mir das empfehlen?

Das mit dem $i vorher ist ja auch irgendwie unschön.

Freue mich über jede Information.

lg Darian
 
Hallo,

ich verstehe ehrlich gesagt dein Problem nicht ganz, ich persönlich finde die Methode sauber und legithim. RUmgefuscht hast du nicht und das Ergebnis ist sauber.
Was ich vielleicht nicht machen würde ist den Source-Array mit den Ergebnissen überschreiben, aber naja das ist Geschmackssache.
LG XerY
 
Mit

PHP:
foreach($Source as $Index => $Element)

bekommst du auch direkt den Index des Elements. Und wenns ein assoziatives ist stattdessen den Namen.
 
Hallo Darian,

wolltest du das per array_walk so lösen?

PHP:
// Testdaten aufsetzen
DEFINE('FOTOS_HOTEL_URL', 'http://www.example.com/bild');
$files[] = 'pfad/zu/bild1.jpg';
$files[] = 'pfad/zu/bild2.jpg';
$files[] = 'pfad1/zu/bild3.jpg';
$files[] = 'pfad1/zu/bild4.jpg';
$files[] = 'pfad2/zu/bild5.jpg';
$files[] = 'pfad2/zu/bild6.jpg';
$files[] = 'pfad3/zu/bild7.jpg';
// kopieren der Testdaten für array_walk() test
$files2 = $files;
// deine Version
$i = 0;
foreach($files as $array) {
    $files[$i] = FOTOS_HOTEL_URL . strrchr($array, "/");
    echo $files[$i]."<br/>";
    $i++;
}
echo "<pre>";
print_r($files);
echo "</pre>";

// per array_walk
// callback function aufsetzen
function cb_exchange_path(&$item, $key, $newPath)
{
    $item = $newPath . strrchr($item, "/");
}
// und nun der array_walk
array_walk($files2, 'cb_exchange_path', FOTOS_HOTEL_URL);
echo "<pre>";
print_r($files2);
echo "</pre>";
Gruss
 
Danke Leute für die Antworten.

Das mit dem foreach($Source as $Index => $Element) ist doch sauberer, habe ja gewusst dass es irgendwas gab.

array_walk werde ich probieren. (sieht interessant aus, und habe ich noch nie gemacht) Obwohl mir beide Methoden gleich sauber vorkommen.

Das $file überschreibe ich, weil ich es eh nicht mehr brauche, habe ich aber schon immer so gemacht. Fällt das auch unter "nicht schön"?

Desweiteren habe ich mich gefragt wie ich mit strrchr das / auch weg haben könnte. Oder wie ich das machen könnte. Will dann nur den Dateinamen.

Danke an euch für die Infos.

lg aus Guatemala
Darian
 
Zuletzt bearbeitet:
Danke, sehr fein, habe ich schon gelesen, bin dann aber irgenwie weiter (übersehen).

basename wird es wohl werden.

Danke für die Info
Daniel
 
Zurück