Seite 1 von 1

Mehrdimensionales Array durchsuchen

Verfasst: Sa 30.Jan, 2010 12:38
von bce
habe folgendes mehrdimanesionales array:

Code: Alles auswählen

Array
(
    [0] => Array
        (
            [image_name] => datei1
            [image_filename] => 45f1ddd2b62831b2695e09cf445e1f19.jpg
            [image_name_clean] => datei1
        )

    [1] => Array
        (
            [image_name] => datei2
            [image_filename] => f43fafa8a887a6a20873025932b1324d.jpg
            [image_name_clean] => datei2
        )

    [2] => Array
        (
            [image_name] => datei1
            [image_filename] => cfa484892303b1b6cfb629aac2a597a3.jpg
            [image_name_clean] => datei1
        )
)
wie kann ich prüfen ob [image_name] doppelt vorhanden ist?
in diesem beispiel wäre ja datei1 doppelt.

habe es mit in_array probiert aber nicht hinbekommen.

Code: Alles auswählen

for ($i=0; $i<sizeof($c_images); $i++) {
	if (in_array($c_images[$i][image_name], $c_images)) 
		{echo " drin"; } else { echo " nicht drin"; }
}
kann man das überhaupt mit in_arrray lösen?

Re: Mehrdimensionales Array durchsuchen

Verfasst: Sa 30.Jan, 2010 14:14
von oxpus
Wenn du aus

Code: Alles auswählen

$array['image_name']
ein neues Array erstellst, wäre das einfacher.
Also

Code: Alles auswählen

$array_2 = $array['image_name'];
Dann könnte man mit

Code: Alles auswählen

if ($in_array($array['image_name'], $array2))
genau prüfen, ob der Inhalt doppelt ist.

Re: Mehrdimensionales Array durchsuchen

Verfasst: So 31.Jan, 2010 00:33
von bce
danke für die geistige anregung..

habs nun wie folgt gelöst:

Code: Alles auswählen

$datei_name = array();

for ($i=0; $i<sizeof($c_images); $i++) {
	array_push($datei_name, $c_images[$i][image_name]);
}

$datei_name_tmp = $datei_name;

//doppelte dateinamen vermeiden - bei gleichen dateinamen unterstrich und zähler anhängen
for ($i=0; $i<sizeof($datei_name); $i++) {
	$tmp = $c_images[$i]['image_name_clean'];

	array_shift($datei_name_tmp);//erstes elemetn entfernen, damit wert sich nicht selbst findet

	if (in_array($tmp, $datei_name_tmp)) {
		$datei_name[$i] .= "_". ++$z; 
	} 
}//for
unlink($datei_name_tmp);
:cool: