WirrWarr mit den Arrays

fredolin

Erfahrenes Mitglied
Hallo PHP Freunde,

ich hab mal wieder den Überblick verloren. Hab da ein Script, was aus einem Ordner Bilder ausließt und dazu soll aus einem Array die Links hinzugefügt werden..

Aber es klappt nicht so wie ich es mir vorstelle..

Hier mein Code
PHP:
$refLink = array(
		array(
			'text' => 'dasAuge',
			'link' => 'meinLink'
			),
		array(
			'text' => 'Xing',
			'link' => 'MeinLink'
			)
		);
	$refpath = 'img/network/';
	$dtref = opendir($refpath);
	
	while(false !== ($filename = readdir($dtref))) {
		if(strstr($filename, '.gif') || strstr($filename, '.jpg') || strstr($filename, '.png')) {
			$imgref = $refpath . $filename;
			$imginfo = getImageSize($imgref);
	
			$networkLinks = '<img src="'.$imgref.'" width="'.$imginfo[0].'" height="'.$imginfo[1].'" alt="webslay.de - Meine Netzwerke" title="webslay.de - Meine Netzwerke" style="border:none;" />';
		}
	}
	foreach($refLink AS $d => $value) {
		echo '<li><a href="'.$value['link'].'" name="'.$value['text'].'" target="_blank">'.$networkLinks.'</a></li>';
	}

Hab es auch mit array_merge versucht, aber auch das klappte nicht. Nun bin ich ratlos..
 
Bitte einfach dazu schreiben, was du gern anders hättest. Auf den ersten Blick sieht das Script funktionstüchtig aus. Was funktioniert nicht wie gewünscht?
 
Hallo Saftmeister,

das script funktioniert auch so, aber wenn ich es so anwende, dann wird mir nur die erste Grafik aus dem Ordnerangezeigt. Da es zwei Array sind, weiss ich nicht, ob ich diese zusammenbinden kann.

Wenn ja, wie?

Gruß
Fredolin
 
Die while-Schleife überschreibt $networkLinks bei jedem Durchlauf das ist dir klar oder?
D.h. deine foreach-Schleife läuft 2 mal aber das angezeigt Bild (das du ja in der while-Schleife "generierst") wird immer das gleiche sein.
 
Hallo rd4eva,

ja das weiss ich und das ist ja das problem. mit foreach-schleifen weiß ich wie ich die zusammen fügen kann.. aber mit der while-schleife weiß ich nicht wie ich das mit dem inhalt / ergebnis aus der foreach-schleife zusammen bekommen.

kann ich in der while-schleife nicht auch die arrays mit abfragen bzw. den inhalt damit durchlaufen lassen, so dass das jeweilige bild auch den richtigen link zugewiesen bekommt?

Gruß
fredolin
 
Die Frage ist, wie erkennt der Code, welchen Array-Eintrag zu welchem Bild auf der HD passt?
 
Wenn $networkLinks ein array() sein soll, müsstest du in der While loop hinter der Variable brackets hinzufügen.
PHP:
$networkLinks[] = '<img .....';

Ausgeben kannst du das Ganze dann etwa so:
PHP:
foreach($refLink AS $d => $value) {
        echo '<li><a href="'.$value['link'].'" name="'.$value['text'].'" target="_blank">'.$networkLinks[$d].'</a></li>';
    }

nicht gerade optimal, aber ich denke mal du möchtest nur fix einen Lösungsansatz und dann selbst optimieren.
(Ich gehe davon aus das die Bilder "random" sind und nicht zum Link passen müssen, oder? ^^)

edit:

Die Links sollen wohl innerhalb der <li> tags stehen oder?
PHP:
echo '<li>';
foreach($refLink AS $d => $value) {
        echo '<a href="'.$value['link'].'" name="'.$value['text'].'" target="_blank">'.$networkLinks[$d].'</a>';
 }
echo '</li>';
 
Zuletzt bearbeitet:
Hey, mir ist grad aufgefallen das du im Beitrag von 9:44 bereits erwähnt hast das die Bilder zum Link passen sollen.
Du müsstest das ganze dann am besten etwas umstrukturieren.
Haben die Bilder den selben Namen wie der Link ?

Wenn ja, versuch das mal in etwas so:

PHP:
<?php
$arrLinks['websitename']['link'] = "www.website.de";
$arrLinks['websitename']['title'] = "ja so webseite halt ne";
$arrLinks['websitename']['name'] = "websitename";
$arrLinks['webslay']['link'] = "webslay.de";
$arrLinks['webslay']['title'] = "webslay.de - Meine Netzwerke";
$arrLinks['webslay']['name'] = "webslay";
$arrLinks['xing']['link'] = "xing.com";
$arrLinks['xing']['title'] = "xing.com Business Network";
$arrLinks['xing']['name'] = "xing";
		
$refpath = 'img/network/';
$dtref = opendir($refpath);

echo '<li>';

while(false !== ($filename = readdir($dtref))) {
	if(strstr($filename, '.gif') || strstr($filename, '.jpg') || strstr($filename, '.png')) {
		$imgref = $refpath . $filename;
		$imginfo = getImageSize($imgref);
		$pinfo = pathinfo($filename);
		$linkname = $pinfo['filename']; // achtung! benötig PHP 5.2.0
		
		$imgTag =  '<img src="'.$imgref.'" width="'.$imginfo[0].'" height="'.$imginfo[1].'" alt="'. $arrLinks[$linkname]['title'] .'" title="'. $arrLinks[$linkname]['title'] .'" style="border:none;" />';
		$aTag = '<a href="'. $arrLinks[$linkname]['link'] .'" name="'. $arrLinks[$linkname]['name'] .'" target="_blank">'. $imgTag .'</a>';
	}	
}

echo '</li>';
?>

Auch noch nicht ganz optimal, aber mehr als 5 Minuten konnte ich jetzt nicht investieren^^.
 
Zuletzt bearbeitet:
Zurück