[PHP]Array uitlezen

Pagina: 1
Acties:
  • 534 views sinds 30-01-2008
  • Reageer

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Beste Tweakers

Ik vul een array op de volgende manier, er kunnen dus meerdere values in komen maar dat licht aan de loop
code:
1
2
3
4
5
begin loop
$myarray[$gegevens['id']]["vraag1"][] = "hoi";
$myarray[$gegevens['id']]["vraag2"][] = "test";
$myarray[$gegevens['id']]["vraag3"][] = "hallo";
end loop


Nu wil ik deze array vervolgens weer uitlezen maar dit gaat niet helemaal goed
Ik heb het op deze manier geprobeerd
code:
1
foreach ($myarray as $key => $value){echo $value;}


Maar dan krijg ik een array terug. opzich logisch maar als ik dan weer een array inbouw lukt het nog steeds niet en ik weet ook niet of dat wel de bedoeling is.

Kan iemand me helpen?

[ Voor 6% gewijzigd door Verwijderd op 19-10-2007 17:35 ]


Acties:
  • 0 Henk 'm!

  • --MeAngry--
  • Registratie: September 2002
  • Laatst online: 19-09 16:35

--MeAngry--

aka Qonstrukt

Waarom doe je het ook niet zo?
PHP:
1
2
3
$myarray[$gegevens['id']]["vraag1"] = "hoi";
$myarray[$gegevens['id']]["vraag2"] = "test";
$myarray[$gegevens['id']]["vraag3"] = "hallo";


Lees jezelf daarnaast eens in over recursie, tweedimensionale array's etc.

Tesla Model Y RWD (2024)


Acties:
  • 0 Henk 'm!

  • Scott
  • Registratie: December 2004
  • Laatst online: 20-09 21:57

Scott

Ik ben, dus ik tweak

Je hebt een array die drie diep is, je zult dus ook 3 keer een foreach moeten nesten. Dat je bij de tweede dus nog steeds 'Array' krijgt is logisch :)

Acties:
  • 0 Henk 'm!

  • Bitage
  • Registratie: April 2006
  • Laatst online: 19-05-2024
Je wilt zo een Array als geheel printen, dat kan niet (is een array met dimensies). Je zou dan eik iets als dit moeten doen dan:

code:
1
2
3
4
5
6
foreach($myarray as $key=>$value){
$num = $num + 1;

echo $myarray[$key]['vraag'.$num];

}

[ Voor 15% gewijzigd door Bitage op 19-10-2007 17:41 ]


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

$myarray is een driedimensionale array. Als je een foreach doet, dan hou je dus in principe twee dimensies over, aangezien je dan de array "per rij" benadert. Je zal dus $value["vraagx"][getal] aan moeten spreken als je wat hebben wil.

Overigens ben je nogal vreemd bezig. Je hebt nu vragen genummerd en gaat ook nog eens een apart veld voor nummering gebruiken (namelijk die [] zonder iets ertussen). Ik denk dat je ["vraagx"] beter weg kan laten.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Je volgens mij is de array wel goed verder.

want het is zo dat per id gegroepeerd moet worden
dus bijv.
id=1 heeft de volgende waardes
vraag1=iets
vraag2=iets
vraag3=iets
vraag1=iets
vraag2=iets
vraag3=iets
vraag1=iets
vraag2=iets
vraag3=iets

id=2 heeft
vraag1=iets
vraag2=iets
vraag3=iets

id=3
vraag1=iets
vraag2=iets
vraag3=iets
vraag1=iets
vraag2=iets
vraag3=iets

enz.

ik heb het nu met de volgende code opgelost. maar is het dus echt niet op een andere manier mogelijk zonder 2x een foreach?

code:
1
2
3
4
5
6
7
8
9
foreach ($myarray as $key => $value)
{
    foreach ($myarray[$key]["email"] as $key2 => $value2)
    {
        echo $myarray[$key]["vraag1"][$key2];
        echo $myarray[$key]["vraag2"][$key2];
        echo $myarray[$key]["vraag3"][$key2];
    }
}

Acties:
  • 0 Henk 'm!

  • Bitage
  • Registratie: April 2006
  • Laatst online: 19-05-2024
ik heb het nu met de volgende code opgelost. maar is het dus echt niet op een andere manier mogelijk zonder 2x een foreach?
Juh, als je dit veel moet doen, kun je een eigen functie bouwen.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
function printValuesFrom3DArray($array,$subkey)
{

   foreach($array as $k=>$v)
   {

      foreach($array[$k][$subkey] as $k2=>$v2)
      {

         echo $array[$k]['vraag1'][$k2];
         echo $array[$k]['vraag2'][$k2];
         // enzovoorts...

      }

   }

}


Dan voer je deze funtie uit met printValuesFrom3DArray($myarray,"email");

[ Voor 7% gewijzigd door Bitage op 19-10-2007 21:46 ]


Acties:
  • 0 Henk 'm!

  • Scott
  • Registratie: December 2004
  • Laatst online: 20-09 21:57

Scott

Ik ben, dus ik tweak

Als het je echt alleen gaat om het echoën, dan kun je ook print_r gebruiken :)

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

IryDaly: die $key2 heb je, zoals ik al zei, helemaal niet nodig. Je nummert als met de "vraagx"-keys. Persoonlijk zou ik mijn array opbouwen als volgt:
PHP:
1
2
3
$myarray[$gegevens['id']][] = "hoi";
$myarray[$gegevens['id']][] = "test";
$myarray[$gegevens['id']][] = "hallo";

Je hebt dan een tweedimensionaal array met daarin een entry voor elk id, met daarin weer een element per vraag. Dat is toch precies wat je nodig hebt? :?

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • Flying_Thunder
  • Registratie: December 2001
  • Niet online
-NMe- schreef op vrijdag 19 oktober 2007 @ 22:20:
IryDaly: die $key2 heb je, zoals ik al zei, helemaal niet nodig. Je nummert als met de "vraagx"-keys. Persoonlijk zou ik mijn array opbouwen als volgt:
PHP:
1
2
3
$myarray[$gegevens['id']][] = "hoi";
$myarray[$gegevens['id']][] = "test";
$myarray[$gegevens['id']][] = "hallo";

Je hebt dan een tweedimensionaal array met daarin een entry voor elk id, met daarin weer een element per vraag. Dat is toch precies wat je nodig hebt? :?
Als ik het goed begreep kan een 'vraag' meerdere values hebben, als die $gegevens['id'] dan een bepaalde groep vragen aanduidt bv. zo:
PHP:
1
2
3
$myarray[7][] = "test";
$myarray[7][] = "hallo";
$myarray[7][] = "doei";

kun je niet meer herleiden bij welke vraag het antwoord 'hallo' dan hoort, aan de key heb je niks als een vraag meerdere values kan hebben. Ik vermoed dat daarom die 'vraagx' array er tussen zit? :)
Pagina: 1