16. april 2008 - 12:40
Der er
12 kommentarer og 1 løsning
Fjerne duplicates fra array.
Jeg har et array. På pladsen $row['event'] er der samme værdi flere gange... Den samme værdi må kun komme en gang, resten skal bare slettes! Hvordan gøres det? Har prøvet med $row['event']= array_flip($row['event']); men det virker ikke! Hele koden det skal køre på: $objImages = new images; $imagedata = $objImages->getData($where); //$imagedata[0] = array_unique($imagedata[0]); foreach ($imagedata as $row) { foreach ($row as $field => $value) { switch($field) { case "imageID": $tmpImageID = $value; break; case "userID": $tmpUserID = $value; break; case "title": $tmpTitle = $value; break; case "path": $tmpPath = $value; break; case "event": $tmpEvent = $value; echo "value = ".$value."<br />"; // if (!isset($_GET['event']))echo '<div class="picture_thumb"><a href="index.php?type=content&id=15&menu=8&event='.$value.'"><img src="modules/images/'.$tmpPath.'" width="120" height="100" alt="'.$value.'"/></a></div>'; break; case "filetype": $tmpFiletype = $value; break; default: $publish = true; break; }//end switch }//end foreach
Annonceindlæg fra Idura
16. april 2008 - 13:20
#1
16. april 2008 - 13:23
#2
Jeg har også prøvet at rode med den, men jeg kan ikke få den til at virker ordentligt.
16. april 2008 - 13:25
#3
Jeg prøvede den sådan her: $objImages = new images; $imagedata = $objImages->getData($where); //$nr = 0; foreach ($imagedata as $row) { $row = array_unique($row); foreach ($row as $field => $value) { { switch($field) { case "imageID": $tmpImageID = $value; break; case "userID": $tmpUserID = $value; break; case "title": $tmpTitle = $value; break; case "path": $tmpPath = $value; break; case "event": $tmpEvent = $value; if (!isset($_GET['event']))echo '<div class="picture_thumb"><a href="index.php?type=content&id=15&menu=8&event='.$value.'"><img src="modules/images/'.$tmpPath.'" width="120" height="100" alt="'.$value.'"/></a></div>'; break; case "filetype": $tmpFiletype = $value; break; default: break; }//end switch } }//end foreach Men jeg får stadig de samme værdier under "event" flere gange.
16. april 2008 - 13:34
#4
Prøv inden du kalder: foreach ($imagedata as $row) { at lav: echo '<pre>'; print_r($imagedata); echo '</pre>'; Og smid indholdet herind. Ellers forstår jeg dig ikke helt.
16. april 2008 - 13:36
#5
Array ( [0] => Array ( [imageID] => 29 [imagename] => 1208014118 [title] => Mee [userID] => 1 [filetype] => jpg [path] => upload/1208014118.jpg [event] => Simpsons [createtimestamp] => 2008-04-12 17:28:38 [changetimestamp] => 2008-04-15 08:21:50 ) [1] => Array ( [imageID] => 30 [imagename] => 1208014154 [title] => Efter [userID] => 1 [filetype] => jpg [path] => upload/1208014154.jpg [event] => Simpsons [createtimestamp] => 2008-04-12 17:29:14 [changetimestamp] => ) [2] => Array ( [imageID] => 31 [imagename] => 1208014449 [title] => Camera [userID] => 1 [filetype] => jpg [path] => upload/1208014449.jpg [event] => Diverse [createtimestamp] => 2008-04-12 17:34:09 [changetimestamp] => ) [3] => Array ( [imageID] => 32 [imagename] => 1208014467 [title] => Psy [userID] => 1 [filetype] => gif [path] => upload/1208014467.gif [event] => Diverse [createtimestamp] => 2008-04-12 17:34:27 [changetimestamp] => ) [4] => Array ( [imageID] => 33 [imagename] => 1208014493 [title] => Spm [userID] => 1 [filetype] => jpg [path] => upload/1208014493.jpg [event] => Diverse [createtimestamp] => 2008-04-12 17:34:53 [changetimestamp] => ) [5] => Array ( [imageID] => 38 [imagename] => 1208338978 [title] => Hayabusa [userID] => 1 [filetype] => jpg [path] => upload/1208338978.jpg [event] => Bikes [createtimestamp] => 2008-04-16 11:42:58 [changetimestamp] => ) )
16. april 2008 - 13:50
#6
Tænkte at jeg måske skulle prøve med $row['event'] = array_unique($row['event']); men det duer heller ikke.
16. april 2008 - 13:57
#7
Trækker du data ud af en SQL inden du smider det i dit array ?
16. april 2008 - 13:59
#8
Man kunne jo evt. løbe array'et igennem manuelt og så smide de events ud, som allerede findes i et midlertidigt oprettet array. $events = array(); foreach ($imagedata as $id => $row) { if(in_array($row['event'],$events)){ unset($imagedata[$id]); } $events[] = $row[event]; } Og så arbejder du med $imagedata som tidligere. Det er dog utestet.
16. april 2008 - 14:03
#9
Prøver lige...
16. april 2008 - 14:16
#10
Super! Det virker! :D Hvad er det lige unset den gør? Det er nok bedst hvis jeg lige forstår koden 100% ;)
16. april 2008 - 14:28
#11
unset() fjerner/nedlægger et element.
Se mere her:
http://dk.php.net/unset Og du får et svar.
16. april 2008 - 15:06
#12
Takker for point.
16. april 2008 - 16:06
#13
- Og jeg takker for hjælpen!
Vi tilbyder markedets bedste kurser inden for webudvikling