[php]array-waarde alleen met print_r te zien

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
ik heb een geposte array genaamd arrlanden. als ik met print_r deze array bekijk, krijg ik netjes de waarden te zien die erin staan. het lukt me alleen niet om hem uit te lezen. waarschijnlijk doe ik iets verkeerd, maar ik weet echt niet wat.


PHP:
4
5
6
7
8
    $arrlanden = $_POST['arrlanden'];
    print_r ($arrlanden);
    print ("<br>");
    print (count ($arrlanden)."<br>");
    print ("lees uit:".$arrlanden['pkLandID']);


geeft als output:

Array ( ['pkLandID'] => niet ['naam'] => random )
2
lees uit:

(de waarden 'niet' en 'random' zijn er door mij ingestopt) de waarde van $arrlanden['pkLandID'] wordt dus niet geprint. ook met print ($arrlanden[0]) lukt het niet.
weet iemand waar dit aan kan liggen?

Acties:
  • 0 Henk 'm!

  • Rotjeknor
  • Registratie: April 2001
  • Laatst online: 01-04-2023
Laat eens de output van je print_r zien?

Ook Knor is aangestoken met het ligfietsvirus!


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Array ( ['pkLandID'] => niet ['naam'] => random )
2
lees uit:

Acties:
  • 0 Henk 'm!

Verwijderd

Hoe ziet je post script er uit? mischien verkeerd gepost?

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
gewoon vanuit een formulier:

print ("<form method='post' action='fill_tables.php' name='frmForm'>");

de array wordt dynamisch gegenereerd:
PHP:
4
5
6
7
8
9
10
11
    print ("<select name=\"arr".$fetch[$current_table]."['".$fetch_fields['Field']."']\">");
    print ("<option value='niet'");
    if ($isEditableField == false) print (" selected");
    print (">niet wijzigen</option>");
    print ("<option value='random'");
    if ($isEditableField == true) print (" selected");
    print (">random</option>");
    print("</select>");

maar ook met phpinfo() krijg ik wel als $_POST['arrlanden'] de juist array te zien, dus hij lijkt wel aanwezig te zijn?!

Acties:
  • 0 Henk 'm!

  • BRAINLESS01
  • Registratie: April 2003
  • Laatst online: 12-09 09:30
je zou eens zoiets kunnen doen:

PHP:
1
2
3
foreach ($arrlanden as $key => $val) {
  print ("key: ".$key.": ".$val.".<br>\n");
}

zou moeten weergeven:
key: phLandID: niet.
key: naam: random

ik weet trouwens ook niet of je wel arrays kan posten... maar aangezien print_r() werkt blijkbaar wel :)

Acties:
  • 0 Henk 'm!

  • ggvw
  • Registratie: September 2001
  • Laatst online: 15-12-2024
probeer eens
echo "<pre>";
print_r($_POST);
echo "</pre>";

geeft vaak veel nuttige info

je moet iig _zeker_ weten dat $_POST['arrlanden'] een array is

en hmmm... moet die <select> niet zo: <select name=array[]>
tussen de blokhaken moet volgens mij niks staan (kan ik me in vergissen)

[ Voor 17% gewijzigd door ggvw op 15-04-2003 16:21 ]


Acties:
  • 0 Henk 'm!

  • BRAINLESS01
  • Registratie: April 2003
  • Laatst online: 12-09 09:30
ggvw schreef op 15 April 2003 @ 16:19:
en hmmm... moet die <select> niet zo: <select name=array[]>
tussen de blokhaken moet volgens mij niks staan (kan ik me in vergissen)
zonder die blokhaken kan je de keys in je array toch geen naam geven... dus het zal wel moeten lijkt me? :? (Ik wist niet eens dat het kon... :))

In ieder geval heb je gelijk met je print_r($_POST);... kan de topicstarter de output daarvan ook even hier posten?

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
foreach... levert als output

key: 'pkLandID': 0.
key: 'naam': random.

maar ik wil later de array-elementen stuk voor stuk (dus niet met foreach) kunnen benaderen adhv de tabel waarbij ze horen. ik moet de waarden dus apart kunnen uitlezen. (ben overigens nu bezig de select inderdaad te vullen met array[] en dan laat ik een tellertje meelopen bij het doorlopen van de tabellen en dat werkt wel, maar wil toch weten waarom dit niet lukt)

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
zonder waarde tussen blokhaken maakt ie arrayNaam[0], arrayNaam[1]. is erg handig. uitkomst van print_r[$_POST] was zelfde als van print_r($arrlanden):
[arrlanden] => Array ( ['pkLandID'] => 0 ['naam'] => random )

Acties:
  • 0 Henk 'm!

  • ggvw
  • Registratie: September 2001
  • Laatst online: 15-12-2024
_BRAINLESS schreef op 15 April 2003 @ 16:24:
[...]

zonder die blokhaken kan je de keys in je array toch geen naam geven... dus het zal wel moeten lijkt me? :? (Ik wist niet eens dat het kon... :))
ah ik was even in de war met een input checkbox

Acties:
  • 0 Henk 'm!

  • BRAINLESS01
  • Registratie: April 2003
  • Laatst online: 12-09 09:30
De array is blijkbaar goed, een laatste controle die je nog kan doen is:
PHP:
1
2
print ("exists: ".array_key_exists("pkLandID", $arrlanden)."<br>\n");
print ("value: ".$arrlanden["pkLandID"]."<br>\n");

als dat niet werkt is er iets mis met de arrays. Misschien kan je dan een bugreport doen op www.php.net (heb je de nieuwste versie van PHP?).

Acties:
  • 0 Henk 'm!

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 03:13
Sheesh, komt er een keer een PHP'er met een goed topic waar alle informatie duidelijk in vermeld staat, komen er een stel mensen die van toeter nog blazen weten langs om te vragen naar zaken die al vermeld waren en met mogelijke 'oplossingen' aanzetten die nergens op gebaseerd zijn (en dan ook niets met het probleem te maken hebben).

Volgens mij gaat het fout omdat je single quotes om je variabelen hebt staan. De keys zelf hebben dus single quotes! Om dit probleem op te lossen, moet je dus je scriptje dat die keys genereerd fixen:
PHP:
1
print ("<select name=\"arr".$fetch[$current_table]."[".$fetch_fields['Field']."]\">");

(Ik heb hier de single quotes na [ en voor ] dus weggehaald!)

[ Voor 7% gewijzigd door Soultaker op 15-04-2003 16:37 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
array_key_exists geeft geen waarde :(
ik houd het inderdaad maar op een bug... (heb versie 4.3.0)

Acties:
  • 0 Henk 'm!

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 03:13
Verwijderd schreef op 15 april 2003 @ 16:37:
array_key_exists geeft geen waarde :(
ik houd het inderdaad maar op een bug... (heb versie 4.3.0)
Nee, het is geen bug. Er is op dit forum al tientallen malen geklaagd over bugs in PHP en voor zover ik me kan herinneren was het altijd een fout van de programmeur: PHP is een brakke taal, maar de gemiddelde PHP programmeur is nog veel brakker. (NOFI)

Zinloze en ondoordachte suggesties als die van _BRAINLESS en ggvw maken het image van PHP (en de gemiddelde PHP programmeur) er ook niet echt beter op. Zeg dan niets! De oplossing was al uit de oorspronkelijke post te halen. Eindeloze verzoeken met meer tests, in de hoop toevallig op een oplossing te stuiten, zijn nou niet echt een solide manier van debuggen te noemen.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
bedankt soultaker, dat was het. ik was al bang dat het zoiets kleins zou zijn...

Acties:
  • 0 Henk 'm!

  • BRAINLESS01
  • Registratie: April 2003
  • Laatst online: 12-09 09:30
soultaker, dank voor je belediging :P

aangezien jij er eerder niet was om een goed antwoord te geven denk ik niet dat je recht van spreken hebt als wij (ik en ggvw) proberen om iemand die hulp nodig heeft te helpen in onze vrije tijd. Dat PHP brak is weet ik, dat de programmeur nog brakker is, is vaak waar, maar ik denk dat iedereen hierover heen zou kijken. Als hij een extra waarde meegestuurd had was het opgevallen.

Overigens denkt(/dacht?) PHP ook dingen als 1==-1, dus de kans dat er bugs worden gevonden is groot.

PHP:
1
2
3
4
5
if (-1 == 1) {
    echo "true";
} else {
    echo "false";
}

Acties:
  • 0 Henk 'm!

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 03:13
_BRAINLESS schreef op 15 april 2003 @ 16:48:
soultaker, dank voor je belediging :P
Geen probleem, ik doe het graag! ;)
aangezien jij er eerder niet was om een goed antwoord te geven denk ik niet dat je recht van spreken hebt als wij (ik en ggvw) proberen om iemand die hulp nodig heeft te helpen in onze vrije tijd. Dat PHP brak is weet ik, dat de programmeur nog brakker is, is vaak waar, maar ik denk dat iedereen hierover heen zou kijken. Als hij een extra waarde meegestuurd had was het opgevallen.
Je moest inderdaad goed kijken, maar dat moet altijd met programmeren. $fiets is voor PHP (of elke taal) niet hetzelfde als $feits en als je vindt dat je daar overheen moet kunnen kijken, dan moet je niet gaan programmeren. Een beetje nauwgezet werken is niet teveel gevraagd, lijkt me.

Als je werkelijk geen idee hebt wat het probleem is (waar het nu op lijkt) staat het je vrij om gewoon niet te reageren. Met reacties zoals die van jou (maar lang niet alleen van jou, trouwens) wordt het alleen maar moeilijk om binen de thread de feitelijke oplossing te vinden. Daarbij denk ik dat je het probleem wel had kunnen vinden, als je de tijd die je nu besteedde aan zinloos gokken naar de oorzaak, had besteed aan een nauwkeurige analyse van de uitvoer van print_r.

Ook draagt een thread als deze niet echt bij aan het ontkrachten van het beeld van PHP als prutstaal en PHP-programmeurs als nog grotere prutsers. Ik doe zelf ook wel eens wat met PHP dus heb ik er ook belang bij dat de beeldvorming niet al te negatief wordt.

Hoewel ik het zonder meer waardeer dat je iemand probeert te helpen, denk ik dat je dat beter kunt beperken tot die gevallen waarin je ook echt behulpzaam bent.
Overigens denkt(/dacht?) PHP ook dingen als 1==-1, dus de kans dat er bugs worden gevonden is groot.

PHP:
1
2
3
4
5
if (-1 == 1) {
    echo "true";
} else {
    echo "false";
}
Bron? Bij mij print dit gewoon false. Sowieso is het feit dat PHP vol bugs zit geen reden om al jouw eigen fouten maar af te doen als bugs in PHP. Zoals ik al zei: de programmeurs van PHP maken fouten, maar de mensen die in PHP programmeren maken nog veel meer fouten. Je kunt, voordat je zo'n fout denkt te vinden, dus beter even goed nadenken.
Pagina: 1