waarde uit array in string zetten

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Rik Engelen

Rik Engelen

19/06/2015 16:17:08
Quote Anchor link
Ik ben er even een tijdje uit geweest.

Maar hoe zet ik ook alweer een waarde uit een array in een string.
Ik heb nu het volgende

array:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
Array
(
    [233] => stdClass Object
        (
            [id] => 233
            [idnumber] => manager P & O-1
            [name] => manager P & O-1
            [description] => MA-PO
        )

)


code:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
if( $roles = lms_cohorts_get_roles( $userid ) )
        {
            
                   $functie = ?;
        
        }
 
PHP hulp

PHP hulp

25/12/2024 22:07:37
 
- SanThe -

- SanThe -

19/06/2015 16:23:58
Quote Anchor link
$var = $array[233];
$var = $array[233]['id'];
 
Rik Engelen

Rik Engelen

19/06/2015 16:26:13
Quote Anchor link
Hallo SanThe,

Die $array[233] is steeds een andere waarde aan de hand van $userid
 
Thomas van den Heuvel

Thomas van den Heuvel

19/06/2015 16:29:57
Quote Anchor link
Ik weet niet wat je precies wilt bereiken?

Bedoel je $array[$userid] dan?

Wat probeer je precies te doen?
 
- SanThe -

- SanThe -

19/06/2015 16:30:10
Quote Anchor link
Dus 234 geeft andere resultaten.
 
Rik Engelen

Rik Engelen

19/06/2015 16:30:23
Quote Anchor link
owja maar wel afwijkend aan de hand van het $userid
 
- SanThe -

- SanThe -

19/06/2015 16:32:42
Quote Anchor link
Je bent niet echt duidelijk.
Gewijzigd op 19/06/2015 16:32:59 door - SanThe -
 
Frank Nietbelangrijk

Frank Nietbelangrijk

19/06/2015 17:34:52
Quote Anchor link
Het lijkt er op dat het een array van objecten is.
Die array kun je doorlopen met een foreach. Een object (class) heeft waarschijnlijk functies als getId() getName() etc
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php

foreach($jouwArray as $object)
{

    echo $object->getId();
}


?>
 
Rik Engelen

Rik Engelen

19/06/2015 17:40:19
Quote Anchor link
ik was vergeten om de functie toe te voegen waar de andere waarde uit komt.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
function lms_cohorts_get_roles( $userid=false )
{    
    global $DB, $USER;
    
    if( !isset( $userid ))
        $userid = $USER->id;
    
    return $DB->get_records_sql( 'SELECT c.id, c.idnumber, c.name, c.description FROM {cohort} c JOIN {cohort_members} my_cohort_members ON my_cohort_members.cohortid=c.id AND my_cohort_members.userid=:userid JOIN {lms_cohort_hierarchy} ch ON ch.cohortid=c.id WHERE 0<FIND_IN_SET(:root_role,hierarchy) ORDER BY c.name', array('userid'=>$userid, 'root_role'=>get_config('*******','*******')));
}



Toevoeging op 19/06/2015 17:41:01:

Hall Frank,

Ik ga met die van jou even testen of ik er dan kom.
 
Frank Nietbelangrijk

Frank Nietbelangrijk

19/06/2015 17:42:51
Quote Anchor link
Probeer deze ook even:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php

foreach($jouwArray as $object)
{

    echo $object->id;
}


?>
 
Rik Engelen

Rik Engelen

19/06/2015 17:47:03
Quote Anchor link
helemaal super het is gelukt allemaal bedankt.
Ik heb nu het volgende:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
if( $roles = lms_cohorts_get_roles( $userid ) )
        {
            foreach($roles as $object)
                {
                    $functie_groep = $roles[$object->id]->name;
                }
    
            echo $functie_groep;
        }
 
- SanThe -

- SanThe -

19/06/2015 17:52:33
Quote Anchor link
Wat is het nut van de foreach() als je alleen de laatste gebruikt.
 
Rik Engelen

Rik Engelen

19/06/2015 17:59:02
Quote Anchor link
Wat stel jij dan voor SanThe ?
 
- SanThe -

- SanThe -

19/06/2015 18:01:48
Quote Anchor link
Doe eens een print_r($roles) tussen regel 2 en 3,
 
Rik Engelen

Rik Engelen

19/06/2015 18:07:07
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
Array ( [164] => stdClass Object ( [id] => 164 [idnumber] => STAGIA [name] => stagiaire alg. en adm. [description] => STAGIA-stagiaire alg. en adm. ) )


Toevoeging op 19/06/2015 18:07:33:

Ik ha nu $userid = 533;
 
- SanThe -

- SanThe -

19/06/2015 18:11:17
Quote Anchor link
Je ziet dat $roles maar 1 record heeft, dus een foreach() is niet nodig.

In de if() heb je geen vergelijking maar een toekenning.
Is dat de bedoeling?
 
Rik Engelen

Rik Engelen

19/06/2015 21:06:15
Quote Anchor link
Die if() is nodig omdat er een else aan zit als de return leeg is hij een andere waarde moet meegeven.

Toevoeging op 19/06/2015 21:08:09:

Hoe kan ik dit nu dan zonder foreach ook alweer doen want ik zie het echt even niet.
 
Frank Nietbelangrijk

Frank Nietbelangrijk

19/06/2015 21:53:20
Quote Anchor link
Zoek het verschil:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
if( $roles = lms_cohorts_get_roles( $userid ) )
?>


met:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
if( $roles == lms_cohorts_get_roles( $userid ) )
?>


Dat is wat SanThe bedoelde.

Toevoeging op 19/06/2015 21:58:18:

- SanThe - op 19/06/2015 18:11:17:
Je ziet dat $roles maar 1 record heeft, dus een foreach() is niet nodig.

Nee dat is niet juist. $roles is een array van objecten. Alleen zit er nu maar één element in de array. Echter kunnen dat er voor het zelfde geld meerder zijn natuurlijk.

Toevoeging op 19/06/2015 22:00:10:

Misschien is het toch handig als Rik even in normaal nederlands uitlegt wat hij uiteindelijk wil bereiken.
(wil je alle rollen van de gebruiker weergeven?)
Gewijzigd op 19/06/2015 22:02:22 door Frank Nietbelangrijk
 
Rik Engelen

Rik Engelen

19/06/2015 23:26:07
Quote Anchor link
Ik wil eigenlijk alleen maar de functiegroep hebben die in ['name'] staat alleen is 164 steeds anders per user.
Mijn gevoel zegt dat het niet hele lastig is en met de foreach werkt het al maar omdat het maar 1 record is misschien anders oplossen dit ?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
Array ( [164] => stdClass Object ( [id] => 164 [idnumber] => STAGIA [name] => stagiaire alg. en adm. [description] => STAGIA-stagiaire alg. en adm. ) )
 
Frank Nietbelangrijk

Frank Nietbelangrijk

20/06/2015 21:50:24
Quote Anchor link
De array die je toont is gewoon niet de meest handige Rik. Ik vraag me ook af hoe je daar aan komt.

Anyway, er van uitgaande dat je altijd maar één object in die array hebt zitten en dus altijd het eerste (en enigste) object wilt hebben dat in de array zit, kun je het zo oplossen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
$role
= current($jouw_array);
echo $role->name;
?>
 
Rik Engelen

Rik Engelen

22/06/2015 10:41:42
Quote Anchor link
Frank bedankt dit werkt zoals ik het wil hebben.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.