[PHP] Array in een array echo-en binnen een for-loop

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Arcane Apex
  • Registratie: Juni 2003
  • Laatst online: 30-01 15:19
Ik heb een form gesubmit waarvan ik in een ander php bestand de post variabele probeer op te vangen.
Echter had de input text-field geen gewone naam, maar een array als naam. Nu probeer ik die array dus aan te roepen in het bestand waarnaar de form toe gesubmit is. Echter nu zit ik in de situatie dat ik een array in een array heb, namelijk $_POST[] is al een array ansich. En ik weet niet hoe ik via php een array, welke al in een array zit(name $_POST), kan echo-en.

Zie hier mijn poging, echter lijkt dit niet te werken:

code:
1
2
3
4
for($n=1;$n<=$_POST['numberOfBugs'];$n++){
    echo 'Report'.$n.'<br />';
    echo 'Bug title: '.$_POST['bugtitle['.$n.']'].'<br />';
}

Acties:
  • 0 Henk 'm!

  • zwippie
  • Registratie: Mei 2003
  • Niet online

zwippie

Electrons at work

Als ik je goed begrijp zoek je waarschijnlijk:
code:
1
$_POST['bugtitle'][$n]

How much can you compute with the "ultimate laptop" with 1 kg of mass and 1 liter of volume? Answer: not more than 10^51 operations per second on not more than 10^32 bits.


Acties:
  • 0 Henk 'm!

  • Q00101100
  • Registratie: Augustus 2005
  • Laatst online: 18-09 15:00
Ik heb pas een paar maand php ervaring, maar als het goed is moet dit het zijn:

code:
1
$_POST['bugtitle'][$n]


edit:
Jeej, te laat. >:)

[ Voor 12% gewijzigd door Q00101100 op 13-02-2008 20:23 ]


Acties:
  • 0 Henk 'm!

  • robkamp
  • Registratie: Maart 2006
  • Laatst online: 19-09 22:13
Arcane Apex schreef op woensdag 13 februari 2008 @ 20:19:
Ik heb een form gesubmit waarvan ik in een ander php bestand de post variabele probeer op te vangen.
Echter had the input text-field geen gewone naam, maar een array als naam. Nu probeer ik die array dus aan te roepen in het bestand waarnaar de form toe gesubmit is. Echter nu zit ik in de situatie dat ik een array in een array heb, namelijk $_POST[] is al een array ansich. En ik weet niet hoe ik via php een array welke al in een array zit(name $_POST), om die te echo-en.

Zie hier mijn poging, echter lijkt dit niet te werken:

code:
1
2
3
4
for($n=1;$n<=$_POST['numberOfBugs'];$n++){
    echo 'Report'.$n.'<br />';
    echo 'Bug title: '.$_POST['bugtitle['.$n.']'].'<br />';
}
Arrays zijn in PHP ook altijd 0-based,

Het volgende is denk ik beter...


code:
1
2
3
4
for($n=0;$n<$_POST['numberOfBugs'];$n++){
    echo 'Report'.$n.'<br />';
    echo 'Bug title: '.$_POST[bugtitle][$n].'<br />';
}


Al heb ik de bijbehorende HTML natuurlijk niet gezien :)

Acties:
  • 0 Henk 'm!

  • Tanuki
  • Registratie: Januari 2005
  • Niet online
PHP:
1
2
3
4
5
6
7
<?php
for ($i = 0, $iCount = count($_POST['bugtitle']); $i < $iCount; $i++)
{
    echo 'Report ' . $i . '<br />';
    echo 'Bug title: ' . htmlspecialchars($_POST['bugtitle'][$i]) . '<br />';
}
?>


Ietsje netter, en zonder veiligheidslekken. ;)

[ Voor 13% gewijzigd door Tanuki op 13-02-2008 20:27 ]

PV: Growatt MOD5000TL3-XH + 5720wp, WPB: Atlantic Explorer v4 270LC, L/L: MHI SCM 125ZM-S + SRK 50ZS-W + 2x SRK 25ZS-W + SRK 20ZS-W Modbus kWh meter nodig?


Acties:
  • 0 Henk 'm!

  • Arcane Apex
  • Registratie: Juni 2003
  • Laatst online: 30-01 15:19
Bedankt mensen, dat deed het allemaal werken.

Verwijderd

code:
1
2
3
4
foreach($_POST['bugtitle'] as $number => $bug) {
    echo 'Report ' . $number. '<br />';
    echo 'Bug title: ' . htmlspecialchars($bug) . '<br />'; 
}


lijkt me toch wat makkelijker!

  • smesjz
  • Registratie: Juli 2002
  • Niet online
l0c4lh0st schreef op woensdag 13 februari 2008 @ 20:27:
PHP:
1
2
3
4
5
6
7
<?php
for ($i = 0, $iCount = count($_POST['bugtitle']); $i < $iCount; $i++)
{
    echo 'Report ' . $i . '<br />';
    echo 'Bug title: ' . htmlspecialchars($_POST['bugtitle'][$i]) . '<br />';
}
?>


Ietsje netter, en zonder veiligheidslekken. ;)
Ik zou de count buiten de loop zetten omdat je bij iedere iteratie de count() functie uitvoert op de array. Nu zal het allicht bij 10 elementen niet zo veel uitmaken, maar aangezien de grootte van $_POST['bugtitle'] array toch niet wijzigt kan je beter die count buiten de loop hebben.
Natuurlijk allemaal gemierenneuk, maar toch.

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Smesjz, dat is inderdaad bij mogelijk omvangrijke loops een leuke optimalisatie, maar let op dat hier de count() call al juist niet in de loop conditie maar in de loop initialisatie staat. ;)

{signature}


Acties:
  • 0 Henk 'm!

  • ikke007
  • Registratie: Juni 2001
  • Laatst online: 18-09 14:10
Ik heb eigenlijk heel lang met foreach() gewerkt over arrays. Hoef je je ook niet druk te maken indien de array niet 0t/m 5 is maar 0..2,4..5 (geen 4)

PHP:
1
2
3
4
foreach($_POST['bugtitle']  as $bug_id => $bug_title){
  echo sprintf('Report %d <br />',$bug_id),NL;
  echo sprintf('Bug title: %s <br />',htmlspecialchars($bug_title)),NL;
}


NB: sprintf() vind ik zelf erg fijn werken omdat het er duidelijker uitziet dan een oneindige string concatenatie (en je eventueel ook formatting kunt doen van getallen).
NB2: ja die comma's bij echo staan daar bewust.
NB3: ik vind dat je niet echt van een 'bug_id' kunt spreken als je de numerieke array index hiervoor gebruikt...

[ Voor 8% gewijzigd door ikke007 op 15-02-2008 08:46 ]

Lets remove all security labels and let the problem of stupidity solve itself


Acties:
  • 0 Henk 'm!

  • Tanuki
  • Registratie: Januari 2005
  • Niet online
smesjz schreef op donderdag 14 februari 2008 @ 15:57:
[...]


Ik zou de count buiten de loop zetten omdat je bij iedere iteratie de count() functie uitvoert op de array. Nu zal het allicht bij 10 elementen niet zo veel uitmaken, maar aangezien de grootte van $_POST['bugtitle'] array toch niet wijzigt kan je beter die count buiten de loop hebben.
Natuurlijk allemaal gemierenneuk, maar toch.
Als je goed kijkt dan staat de count() in de initialisatie van de for-loop, die wordt maar 1 maal uitgevoerd. :)

PV: Growatt MOD5000TL3-XH + 5720wp, WPB: Atlantic Explorer v4 270LC, L/L: MHI SCM 125ZM-S + SRK 50ZS-W + 2x SRK 25ZS-W + SRK 20ZS-W Modbus kWh meter nodig?

Pagina: 1