Avatar billede junold Nybegynder
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&amp;id=15&amp;menu=8&amp;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
Avatar billede jakobdo Ekspert
16. april 2008 - 13:20 #1
Kig på følgende array funktion: http://dk.php.net/manual/en/function.array-unique.php
Avatar billede junold Nybegynder
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.
Avatar billede junold Nybegynder
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&amp;id=15&amp;menu=8&amp;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.
Avatar billede jakobdo Ekspert
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.
Avatar billede junold Nybegynder
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] =>
        )

)
Avatar billede junold Nybegynder
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.
Avatar billede jakobdo Ekspert
16. april 2008 - 13:57 #7
Trækker du data ud af en SQL inden du smider det i dit array ?
Avatar billede jakobdo Ekspert
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.
Avatar billede junold Nybegynder
16. april 2008 - 14:03 #9
Prøver lige...
Avatar billede junold Nybegynder
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% ;)
Avatar billede jakobdo Ekspert
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.
Avatar billede jakobdo Ekspert
16. april 2008 - 15:06 #12
Takker for point.
Avatar billede junold Nybegynder
16. april 2008 - 16:06 #13
- Og jeg takker for hjælpen!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester