Avatar billede stefmeister Nybegynder
27. juli 2008 - 02:59 Der er 3 kommentarer og
1 løsning

Få bestemt data fra array

Hej, nu er det ved at være noget tid siden, at jeg har lavet php sidst, så er lidt rusten.

Hvordan kan man trække noget bestemt data ud af et array? Altså hvis man ikke ved hvilken position dataerne i arrayet ligger, men blot f.eks. hvilket navn det har etc?
Pointen er, at jeg har et udtræk fra min sql, som bliver lagt ned i et array, som indeholder en masse events. De to dataer der bliver hentet, er henholdsvis VID og NAME. Hvordan kan jeg så finde navnet, på f.eks. det der har VID = 8?

Det nemmeste ville være, at trække det fra databasen direkte med begrænsning hvor f.eks. VID = 8, men denne løsning er desværre helst undgåelig.
Pointen er, at mine data i databasen ikke nødvendigvis ligger i orden, f.eks. er VID nummere ikke nødvendigvis det nummer de ligger i databasen, hvis der f.eks. er blevet slettet noget. Så jeg kan ikke blot tage f.eks. $array[id-nummeret], da det i arrayet bliver lagt ind, i samme orden som det ligger i databasen.

F.eks. ser mit array sådan her ud:

$event = (    [0] =>    VID => 2
            NAME => Event1
        [1] =>    VID => 5
            NAME => Event2
        [2] =>    VID => 1
            NAME => Event3)

(ved ik lige om det er skrevet rigtigt op, men det burde være forståeligt, hvordan dataerne ligger i arrayet).

Hvis jeg så gerne vil vide, hvad navnet er i den del af arrayet hvor VID = 1, hvordan finder jeg det? Jeg kan jo ikke blot skrive echo $event[1], da den så vil vise mig den som ligger nummer 1 i arrayet, som f.eks. er den der har VID = 5.

Er der nogen der kan hjælpe mig med det, og er det overhoved muligt?
Avatar billede w13 Novice
27. juli 2008 - 11:43 #1
Jeg tror måske, du må lave en funktion, der gennemløber arrayet og findet det givne VID og så returnerer positionen.
Avatar billede olebole Juniormester
27. juli 2008 - 14:04 #2
<ole>

Da du ikke viser noget kode, er w13's forslag nok det tætteste, man kan komme - men jeg ville nok selv forsøge at lave en mere effektiv konstruktion (og det ville w13 sikkert også)  =)

Det, du viser, giver ingen mening - og man kunne frygte, at den løsning, du har lavet, nogenlunde svarer til det, du har skrevet. I så fald har du ingen mulighed for at tilgå det ønskede elementet, da det så vil være overskrevet flere gange. Men det er ikke til at sige uden en mere præcis forklaring

/mvh
</bole>
Avatar billede stefmeister Nybegynder
27. juli 2008 - 14:41 #3
Jeg er ved at lave en MVC component til et CMS system som hedder Joomla. Jeg har så en funktion i min model:

function getGreeting()
{
  $db =& JFactory::getDBO();

  $query = 'SELECT * FROM VENUE ORDER BY VID asc';
  $db->setQuery( $query );
  $greeting = $db->loadObjectList();

  return $greeting;
}

Den returnere så alt i min database i det array som hedder greeting. I min View del, har jeg så en funktion der hedder:


    function display($tpl = null)
    {
    $id = JRequest::getVar('id');
        $model =& $this->getModel();
        $greeting = $model->getGreeting();
        if($id) {
        $this->assignRef( 'id', $id);
            $this->assignRef( 'greeting',    $greeting );
        } else {
            $this->assignRef( 'greeting',    $greeting );
        }

        parent::display($tpl);
    }

videre i min display har jeg:

        $greeting = $this->greeting;
        echo $id." <-- Dette er ID der er valgt<br><br>";
        echo "her viser den:<br>".$greeting[$id]->NAME;
        print_r($greeting[id]);
        echo "<br><br>";
        foreach($this->greeting as $row) {echo $row->VID." ".$row->NAME."<br>"; }


Jeg får så en komplet liste over alle mine events, som ligger i det array som hedder Greeting. Hvis så at den så registrere, at f.eks. &id= et nummer, så skal den kun vise det enkelte event.
I en Sql query ville jeg skrive noget lign.: $query = 'SELECT * FROM VENUE WHERE VID = '.$id.' ORDER BY VID asc';

Er der en nem måde, at trække det ud af arrayet på, istedet for at skulle tilbage og trække data ud fra databasen istedet?
Hvis jeg laver en print_r af mit array vil det se sådan her ud:

Array(     [0] => stdClass Object ( [VID] => 1 [NAME] => Event1)
    [1] => stdClass Object ( [VID] => 2 [NAME] => Event2)
    [2] => stdClass Object ( [VID] => 3 [NAME] => Event3))
Avatar billede stefmeister Nybegynder
15. oktober 2008 - 21:08 #4
lukker.
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