Dubbel foreach gebruiken

Status
Niet open voor verdere reacties.

sanma

Gebruiker
Lid geworden
11 dec 2008
Berichten
170
Hallo,

Ik wil graag via een foreach een tabel maken met 2 kolommen als volgt:

PHP:
$websites_deel1 = array(website1, website2, website3, website4);
$websites_deel2 = array(website5, website6, website7, website8);

foreach ($websites_deel1 as $website_deel1 AND $websites_deel2 as $websites_deel2) {

echo"
<tr>
<td width='20%'></td>
<td width='80%'><input type='checkbox' name='".$website_deel1."' value='1'>".ucfirst($website_deel1)."</td>
<td width='80%'><input type='checkbox' name='".$website_deel2."' value='1'>".ucfirst($website_deel2)."</td>
</tr>
";

Dit werkt echter niet omdat je geen AND kan gebruiken. De bedoeling is dat het er zo uit komt te zien:
website1 website5
website2 website6
website3 website7
website4 website8

Misschien doe ik het op een hele verkeerde manier, als het anders kan hoor ik het graag!
 
Kun je beter op deze manier doen:

PHP:
$websites = array ( 
  array( 'row1' => 'website1', 'row2' => 'website2' ),
  array( 'row1' => 'website3', 'row2' => 'website4' ),
)

foreach( $websites as $combo ) {

$website_deel1 = $combo['row1'];
$website_deel2 = $combo['row2'];

echo"
<tr>
<td width='20%'></td>
<td width='80%'><input type='checkbox' name='".$website_deel1."' value='1'>".ucfirst($website_deel1)."</td>
<td width='80%'><input type='checkbox' name='".$website_deel2."' value='1'>".ucfirst($website_deel2)."</td>
</tr>
";

}

Als je het idee begrijpt :)
 
Ik snap de bedoeling echter krijg ik een foutmelding en weet niet waar het aan ligt:

Parse error: syntax error, unexpected T_FOREACH in
 
Oh ik ben een puntkomma vergeten in de eerste array... moet je er nog even achter plakken
 
Stom van me helemaal overheen gekeken bedankt voor je hulp!
 
Waarom moeilijk doen met een array-in-array? In je 1e post maak je 2 aparte arrays aan, waarom zet je alle websiteX dingen niet in 1 array?

Daarnaast kan je nog gebruik maken van array_merge ().
 
Hallo,

Dit doe ik omdat ik 2 kolommen wil als ik alles in 1 array zet heb ik 2 dezelfde kolommen.
 
Ik zou het inderdaad zo doen als AJT het zegt.

PHP:
$websites = array(website1, website2, website3, website4, website5, website6, website7, website8);



for ( $i = 0; $i < ( count ( $websites ) / 2 ); $i + 2 ) {

  echo '<tr>';
  echo '<td width="20%"></td>';
  echo '<td width="80%"><input type="checkbox" name="' . $websites[ $i ] . '" value="1">' . ucfirst ( $websites[ $i ] ) . '</td>';
  echo '<td width="80%"><input type="checkbox" name="' . $websites[ $i + 1 ] . '" value="1">' . ucfirst ( $websites[ $i + 1 ] ) . '</td>';
  echo '</tr>';

}

Niet getest, maar dat is het idee...
 
dat is inderdaad een betere oplossing echter is er nu een loop gemaakt, hij blijft site 1 en 2 langs elkaar zetten en oneindig onder elkaar zodat de pagina vastloopt.
 
Was er ff niet helemaal bij, $i + 2 moest zijn $i += 2 en nog een dom foutje in de upperlimit van de loop. Zo werkt ie:

PHP:
<?php

  $websites = array('website1', 'website2', 'website3', 'website4', 'website5', 'website6', 'website7', 'website8');
 
  echo '<table>';
 
  for ( $i = 0; $i < count ( $websites ); $i += 2 ) {
	
    echo '<tr>';
    echo '<td width="20%"></td>';
    echo '<td width="80%"><input type="checkbox" name="' . $websites[ $i ] . '" value="1">' . ucfirst ( $websites[ $i ] ) . '</td>';
    if ( array_key_exists ( $i + 1, $websites ) ) {
      echo '<td width="80%"><input type="checkbox" name="' . $websites[ $i + 1 ] . '" value="1">' . ucfirst ( $websites[ $i + 1 ] ) . '</td>';
    } else {
      echo '<td width="80%"></td>';
    }
    echo '</tr>';
 
  }

  echo '</table>';

?>

[EDIT]
Even een check voor een oneven aantal items toegevoegd, dat zou anders een error geven.
[/EDIT]
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan