Avatar billede laggal Nybegynder
13. juli 2012 - 21:51 Der er 12 kommentarer

PHP multidimensional array

Hejsa, kan det lade sig gøre at lave en array i en array i en array? Jeg har prøvet på det, man kan ikke få det til at fungere..

min kode:

<?php
$array = array(
              "Youtube"  =>    array(
                                "Video1" => array(
                                            "Titel"        =>  "Titlen på video 1, Youtube",
                                            "Varighed"      =>  "Længden på video 1, Youtube",
                                            "Beskrivelse"  =>  "Beskrivelsen på video 1, Youtube"
                                            ),
                                "Video2" => array(
                                            "Titel"        =>  "Titlen på video 2, Youtube",
                                            "Varighed"      =>  "Længden på video 2, Youtube",
                                            "Beskrivelse"  =>  "Beskrivelsen på video 2, Youtube"
                                            ),
                                "Video3" => array(
                                            "Titel"        =>  "Titlen på video 3, Youtube",
                                            "Varighed"      =>  "Længden på video 3, Youtube",
                                            "Beskrivelse"  =>  "Beskrivelsen på video 3, Youtube"
                                            )
                           
                                ),
            "Metacafe"  =>    array(
                                "Video1" => array(
                                            "Titel"        =>  "Titlen på video 1, Metacafe",
                                            "Varighed"      =>  "Længden på video 1, Metacafe",
                                            "Beskrivelse"  =>  "Beskrivelsen på video 1, Metacafe"
                                            ),
                                "Video2" => array(
                                            "Titel"        =>  "Titlen på video 2, Metacafe",
                                            "Varighed"      =>  "Længden på video 2, Metacafe",
                                            "Beskrivelse"  =>  "Beskrivelsen på video 2, Metacafe"
                                            ),
                                "Video3" => array(
                                            "Titel"        =>  "Titlen på video 3, Metacafe",
                                            "Varighed"      =>  "Længden på video 3, Metacafe",
                                            "Beskrivelse"  =>  "Beskrivelsen på video 3, Metacafe"
                                            )
                           
                                )
                           
              );
    foreach($array as $side => $film => $info) {
        echo $film . "<br />";
    }
       

?>
Avatar billede olebole Juniormester
13. juli 2012 - 22:10 #1
<ole>

Dit array fejler ikke noget, men det gør din foreach. Prøv at skrive:

foreach($array as $key => $arr) {
    var_dump($arr);
    echo "<hr>";
}

Så kan du sikkert bedre se, hvordan det hænger sammen  =)

/mvh
</bole>
Avatar billede laggal Nybegynder
13. juli 2012 - 22:15 #2
Hvordan kan jeg så fx få den til at skrive alle titlerne på videoerne? :)
Avatar billede laggal Nybegynder
13. juli 2012 - 22:18 #3
sådan her:

Titlen på video 1, Youtube
Titlen på video 1, Metacafe
Titlen på video 2, Youtube
Titlen på video 2, Metacafe
Titlen på video 3, Youtube
Titlen på video 3, Metacafe
Avatar billede olebole Juniormester
13. juli 2012 - 22:21 #4
Hvis det er, hvad du skal have ud, må du bruge en ikke særlig effektiv kode. Inden du får svaret: Hvorfra komme array'et - og kan du få samme data i andre opstillinger?
Avatar billede laggal Nybegynder
13. juli 2012 - 23:00 #5
det er fordi jeg prøver at lære at lave en hjemmeside som samler videoer fra forskellige hjemmesider.. fx hvis jeg søger på min hjemmeside, skal den gå ind og hente videoerne fra fx youtube og andre sider..
Men den skal jo ikke skrive alle youtube videoerne lige efter hinanden og derefter alle metacafe videoerne efter hinanden.. de skal blandes hvis du forstår..

video nummer 1 fra alle sider, derefter video nummer 2 osv.

og så tænkte jeg at det ville være lettest med et array :)
har også tænkt mig at dele det op i sider, så den ikke viser alle resultater på den samme side.. det vil tage lang tid at loade :)
Avatar billede olebole Juniormester
13. juli 2012 - 23:38 #6
"og så tænkte jeg at det ville være lettest med et array" >> Det er det måske også - men det er ikke spor smart. Da du ikke giver et brugbart svar på, om du kan opstille data smartere, må du nøjes med en skodversion:

foreach($array as $arr) {
    foreach($arr as $vid) {
        echo $vid['Titel'].'<br>';
    }
}

Henter du virkelig data, hvergang en bruger tilgår din side? I så fald bør du absolut finde en anden løsning!

For det første er du på kant med lovgivningen om ophavsret - og derudover vil din side være en pest for de sider, du leecher!

Hvis dit indhold absolut skal være kopieret fra andres sites, kan du i det mindste gøre det, så du generer dem mindst muligt. Lav en databasebaseret løsning i stedet
Avatar billede laggal Nybegynder
13. juli 2012 - 23:56 #7
Som sagt er det kun for at lære det :) kan godt lide lidt udfordringer og så synes jeg det kunne være spændende at prøve at se om det kunne lykkedes for mig at lave sådan en side :)

For det første har jeg ikke tænkt mig at lægge den ud nogen steder..
For det andet er jeg ikke på kantet med ophavsret så længe jeg linker til deres side hver gang en video skal ses.. Desuden tilbyder Youtube selv deres videoer "indkapslet" på andres sider.
Avatar billede olebole Juniormester
14. juli 2012 - 00:13 #8
"For det andet er jeg ikke på kantet med ophavsret så længe jeg linker til deres side hver gang en video skal ses" >> Det ligger der faktisk afgørelser om fra fogedretten - naturligvis forudsat, siden er offentligt tilgængelig.

Det er små teknikaliteter, der afgør, om det er ulovligt eller ej. Ting du ikke kan overskue, når du ikke kender den nøjagtige ordlyd af loven - og ikke er juridisk ekspert.

"Desuden tilbyder Youtube selv deres videoer "indkapslet" på andres sider." >> Præcis, og det er jo straks en fuldstændig anden ting! Netop derfor fik du i en anden tråd det råd, at bruge deres API, så du holder dig på den rigtige side.

Da et kald gennem API'et er dramatisk meget mindre og kræver langt færre ressourcer, generer du desuden YouTube (og dermed alle os andre) langt mindre. Det koster en formue at udvikle et sådan API ... det gør man ikke for sjov  *o)
Avatar billede olebole Juniormester
14. juli 2012 - 00:17 #9
- men under alle omstændigheder er det altid noget skidt med multidimentionale arrays, når et af de indre arrays skal listes. Så er du nemlig nødt til at bruge loop i loop, hvilket aldrig er ønskeligt
Avatar billede laggal Nybegynder
14. juli 2012 - 00:27 #10
er der andre måder det ville være lettere at lave det i stedet? :)

Har ikke så meget erfaring med php som du nok kan høre, men hvis du og har nogle gode tutorial jeg er frisk på at lære! :)
Avatar billede olebole Juniormester
14. juli 2012 - 00:37 #11
Det er vist tredie gang, jeg fortæller dig, at jeg ikke kan angive en anden løsning, når jeg ikke ved, hvordan du indsamler data.

En bedre løsning vil kræve dog kræve, du bruger en database. Når du er kommet videre og har fået lidt erfaring med databaser, kan du tænke på at lave noget bedre  =)
Avatar billede laggal Nybegynder
14. juli 2012 - 10:34 #12
mine data bliver indsamlet ved at bruge preg_match_all :)
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