[PHP]Array element is er wel, maar is er niet?

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Misschien ligt het aan mij want ik ben deze week al veel te lang bezig ivm een dealine morgen maar ik trek mijn haren op het moment uit mijn hoofd vanwege het volgende probleem.

Dit stukje code:

PHP:
1
2
3
4
5
foreach($theprod as $test)
{
    print_r($test);
        echo "<br/>theid:" . $test['id'];
}


Drukt het volgende af:

Array ( ['id'] => 26 ['aantalcheck'] => )
id:

Rara waarom is mijn id leeg?

Heb uiteraard gekeken naar de spelling. Deze regels staan in de code op dezelfde manier als hier, dus direct onder elkaar, er gebeurt niets met de data tussen de print_r en de echo.

Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 03:42

.oisyn

Moderator Devschuur®

Demotivational Speaker

Wat ik raar vind is dat je in je code "theid:" print, maar in je uitvoer slechts "id:" staat, waardoor ik het vermoeden krijg dat de code waar je naar kijkt op dat moment helemaal niet uitgevoerd wordt.

Ik krijg geen quotes om string keys met print_r. Probeer eens $test["'$id'"] (let op de enkele quotes tussen de aanhalingstekens)

PHP:
1
2
3
4
$a["aap"] = "noot";
$a["'aap'"] = "noot";
print_r($a);
var_dump($a);

geeft:
code:
1
2
3
4
5
6
7
8
9
10
11
Array
(
    [aap] => noot
    ['aap'] => noot
)
array(2) {
  ["aap"]=>
  string(4) "noot"
  ["'aap'"]=>
  string(4) "noot"
}

[ Voor 106% gewijzigd door .oisyn op 11-06-2008 17:01 ]

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

  • Sjoerd
  • Registratie: December 2003
  • Niet online
En wat doet dit:

PHP:
1
$test=array_values($test);


hij is niet meer keys maar ach als je een deadline te halen hebt?...

Modelbouw - Alles over modelbouw, van RC tot diorama


Acties:
  • 0 Henk 'm!

  • Jaap-Jan
  • Registratie: Februari 2001
  • Laatst online: 15:06
Met de code die je post is weinig mis, lijkt me:

PHP:
1
2
3
4
5
6
7
$theprod = array(array('id' => 26, 'aantalcheck' => ''));

foreach($theprod as $test)
{
    print_r($test);
        echo "<br/>id:" . $test['id'];
}


geeft:
code:
1
2
Array ( [id] => 26 [aantalcheck] => )
id:26


Met PHP Version 5.2.0-8+etch11

| Last.fm | "Mr Bent liked counting. You could trust numbers, except perhaps for pi, but he was working on that in his spare time and it was bound to give in sooner or later." -Terry Pratchett


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Probeer eens $test["'$id'"]
Hmm dat geeft het goede id. Dankjewel, ik begrijp nog niet precies waarom maar daar ga ik me na morgenochtend eens druk over maken.

Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 03:42

.oisyn

Moderator Devschuur®

Demotivational Speaker

Jaap-Jan: jouw print_r output is anders dan die van de TS ;)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
.oisyn schreef op woensdag 11 juni 2008 @ 16:55:
Ik krijg geen quotes om string keys met print_r. Probeer eens $test["'$id'"] (let op de enkele quotes tussen de aanhalingstekens)
Of doe gewoon var_export om te kijken hoe de key geset wordt. :)
Verwijderd schreef op woensdag 11 juni 2008 @ 17:02:
Ik begrijp nog niet precies waarom
Mooi, dan ben je wellicht ook zelf degene die de key zo stom definieert. :Y)

{signature}


Acties:
  • 0 Henk 'm!

  • Jaap-Jan
  • Registratie: Februari 2001
  • Laatst online: 15:06
.oisyn schreef op woensdag 11 juni 2008 @ 16:55:

Ik krijg geen quotes om string keys met print_r. Probeer eens $test["'$id'"] (let op de enkele quotes tussen de aanhalingstekens)
Hier ook geen quotes, dus de key zou inderdaad letterlijk (met quotes dus) 'id' kunnen zijn.
.oisyn schreef op woensdag 11 juni 2008 @ 17:02:
Jaap-Jan: jouw print_r output is anders dan die van de TS ;)
Ik wilde nog editen. 8)7

[ Voor 22% gewijzigd door Jaap-Jan op 11-06-2008 17:05 ]

| Last.fm | "Mr Bent liked counting. You could trust numbers, except perhaps for pi, but he was working on that in his spare time and it was bound to give in sooner or later." -Terry Pratchett


Acties:
  • 0 Henk 'm!

  • GlowMouse
  • Registratie: November 2002
  • Niet online
.oisyn schreef op woensdag 11 juni 2008 @ 16:55:
Ik krijg geen quotes om string keys met print_r. Probeer eens $test["'$id'"] (let op de enkele quotes tussen de aanhalingstekens)
Die fouten zie je niet vaak, wel goed dat je dat zag met die quotes. Alleen zou het niet $test["'id'"] moeten zijn?

Acties:
  • 0 Henk 'm!

  • Jaap-Jan
  • Registratie: Februari 2001
  • Laatst online: 15:06
GlowMouse schreef op woensdag 11 juni 2008 @ 17:08:
[...]

Die fouten zie je niet vaak, wel goed dat je dat zag met die quotes. Alleen zou het niet $test["'id'"] moeten zijn?
Klopt. :)

| Last.fm | "Mr Bent liked counting. You could trust numbers, except perhaps for pi, but he was working on that in his spare time and it was bound to give in sooner or later." -Terry Pratchett


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Voutloos schreef op woensdag 11 juni 2008 @ 17:04:
[...]
Mooi, dan ben je wellicht ook zelf degene die de key zo stom definieert. :Y)
Juist, inmiddels weet ik wat er aan de hand was, de extra quotes werden meegegeven met mijn form.

Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 03:42

.oisyn

Moderator Devschuur®

Demotivational Speaker

GlowMouse schreef op woensdag 11 juni 2008 @ 17:08:
[...]

Die fouten zie je niet vaak, wel goed dat je dat zag met die quotes. Alleen zou het niet $test["'id'"] moeten zijn?
Euh ja idd 8)7

[ Voor 4% gewijzigd door .oisyn op 11-06-2008 19:55 ]

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

  • dada
  • Registratie: September 2007
  • Laatst online: 14-07 22:37

dada

Verzamelaar van rotzooi

Soms is het object wat je uitleest niet daadwerkelijk een Array, maar iets dat erop lijkt. Dat kan gebeuren als je iets terugkrijgt van een mysterieuze functie die je niet zelf hebt geschreven. In dat geval kan het zijn dat je $myObject->id moet doen. Maar dat is hier niet het geval, omdat $myObject['id'] bij een niet-Array volgens mij meteen tot een parse-fout zou moeten leiden. (En het is ook al opgelost, zie ik...)

[ Voor 19% gewijzigd door dada op 11-06-2008 23:03 ]

Nummer 27 op de wereldranglijst stroopwafels eten.


Acties:
  • 0 Henk 'm!

  • compufreak88
  • Registratie: November 2001
  • Laatst online: 02-05 17:51
msikma schreef op woensdag 11 juni 2008 @ 23:02:
Soms is het object wat je uitleest niet daadwerkelijk een Array, maar iets dat erop lijkt. Dat kan gebeuren als je iets terugkrijgt van een mysterieuze functie die je niet zelf hebt geschreven. In dat geval kan het zijn dat je $myObject->id moet doen. Maar dat is hier niet het geval, omdat $myObject['id'] bij een niet-Array volgens mij meteen tot een parse-fout zou moeten leiden. (En het is ook al opgelost, zie ik...)
Dan zou je bij print_r terugkrijgen dat je een class uitprint ipv een array
Pagina: 1