Autor Zpráva
Apostolus
Profil
Dobrý večer,

mám takjový problém, pomocí cyklu for, vypisuju pole:



$pole1=array("ahoj", "cau");

for($i=0; $i<=count($pole1); $i++) {
echo $pole[$i];
}



to ještě není problém, pak mám druhé pole:


$pole2=array();

$pole2[0][]=1;
$pole2[0][]=2;
$pole2[0][]=3;
$pole2[0][]=4;

$pole2[1][]=5;
$pole2[1][]=6;
$pole2[1][]=7;
$pole2[1][]=8;



čeho já chci dosáhnout je, že mi to vypíše nejdřív první prvek pole1 a pak všechny prvky pole2. Abych to lépe vysvětlím, tak to znázorním:

vypsalo by se toto:

ahoj
1
2
3
4
čau
5
6
7
8

přičemž by nevadilo, kdybych přidal další prvky, třeba do pole1 prvek "čus" a další prvky do pole2 ale nevím jak to pomocí cyklů dosáhnout.

zkoušel jsem tohle:


<? for($i=0;$i<count($pole1);$i++): ?>
<table border="0" cellspacing="5" cellpadding="1">
<tr><td align="center"><b><?=$pole1[$i];?></b></td></tr>

<?for($a=0;$a<count($pole2);$a++): ?>
<tr><td align="center"><b><?=$pole2[$a][$a];?></b></td></tr>
<?endfor;?>

</table>
<?endfor;?>


ale vypsali mi to první a poslední prvek pole2 a to 2x.
Alphard
Profil

<?php
$pole1=array("ahoj", "cau");

$pole2=array();

$pole2[0][]=1;
$pole2[0][]=2;
$pole2[0][]=3;
$pole2[0][]=4;
$pole2[1][]=5;
$pole2[1][]=6;
$pole2[1][]=7;
$pole2[1][]=8;


for($i = 0; $i < count ($pole1); $i++):

echo $pole1[$i]."<br>";
foreach ($pole2[$i] as $line)
echo $line."<br>";

endfor;
?>
tiso
Profil
1. Na prechádzanie polí je lepšie používať foreach miesto for
2. jedno z riešení (bez tých tabuliek):
foreach($pole1 as $key => $val){

echo "$val\r\n";//ahoj
echo implode("\r\n", $pole2[$key]);//1 2 3 4
}
Apostolus
Profil
Paráda, funguje to!! děkuju moc
Apostolus
Profil
jestli bych se ještě mohl zeptat...chtěl bych pro lepší orientaci změnit pole2 na:


$pole2['ahoj'][]=1;
$pole2['ahoj'][]=2;
$pole2['ahoj'][]=3;
$pole2['ahoj'][]=4;
$pole2['cau'][]=5;
$pole2['cau'][]=6;
$pole2['cau'][]=7;
$pole2['cau'][]=8;



zkoušel jsem to tedy:



for($i = 0; $i < count ($pole1); $i++):

echo $pole1[$i]."<br>";
foreach ($pole2 as $keyt => $value) {
foreach ($pole2[$keyt] as $key => $value) {
echo $value."<br>";
}
}

endfor;



ale vypsali mi to vše - tedy:

ahoj
1-8
cau
1-8

tedy, všechno najednou, nevíte ještě jednou včem je problém?
Alphard
Profil
jednoduchou úpravou to jde takhle, ale přestává se mi to líbit, je to už tak trochu prasečina



for($i = 0; $i < count ($pole1); $i++):

echo $pole1[$i]."<br>";
foreach ($pole2[$pole1[$i]] as $line)
echo $line."<br>";

endfor;
Apostolus
Profil
už jsem na to přišel, omlouvám se za zdržování

EDIT: (pozdě) děkuju za pomoc
tiso
Profil
Apostolus, Alphard - nieje nutné použiť 2 cykly, stačí jeden foreach + implode...
Alphard
Profil
tiso
poslední položku těžko odřádkuješ
konstrukce echo implode()."<br>"; se mi nelíbí :-)
Alphard
Profil
a navíc to bude asi dávat do tabulky
tiso
Profil
Alphard - nelíbí? ale ide to... I to s tou tabuľkou v takom tvare ako je teraz, pokiaľ by tam boli ďalšie dynamické stĺpce tak by to bol problém...

Otázka: prečo si použil for+foreach a nie 2x foreach?

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: