Autor Zpráva
Han
Profil
Zdravím, s poľami nepracujem dlho, prakticky som sa vo svojom učení PHP k nim dostal pred dvoma dňami a mám istú otázku.. Mám multidimenzionálne pole $a. Doň priradím nejaké hodnoty ako
$a[0][0]= "jednajedna";
$a[0][1]="jednadva";
$a[0][2]="jednatri";

$a[1][0]="dvajedna";
$a[1][1]="dvadva";
$a[1][2]="dvatri";

A potreboval by som toto pole postupne vypísať takým spôsobom, aby robilo toto: Najprv sa vypíše $a[0][0], potom $a[1][0] až do $a[n][0], ak už nie sú ďalšie [n], tak vypíše $a[0][1], potom $a[1][1] atď., až pokým sa nevypíše celé pole. Jednoducho, nejde mi o to postupne vypisovať prvý index [0] a jeho hodnoty zaradaom, potom druhý index [1] atď. ale tieto hodnoty medzi sebou premiešavať. Snáď niekto porozumel môjmu neodbornému vyjadrovaniu.. Takže, akú konštrukciu by som na toto mohol použiť? Ďakujem
panther
Profil
Han:
<?php
$a[0][0] = "jednajedna";
$a[0][1] = "jednadva";
$a[0][2] = "jednatri";

$a[1][0] = "dvajedna";
$a[1][1] = "dvadva";
$a[1][2] = "dvatri";

foreach ($a as $key1 => $array) {
    foreach ($array as $key2 => $value) {
        echo 'a[' . $key1 . '][' . $key2 . ']: ' . $value . '<br>';
    }
}

?>

↓ Pardon, špatně jsem četl. Myslel jsem, že nevíš, jak vypsat vícerozměrné pole.
Han
Profil
Ehm, čo to má robiť? pretože mne to vypisuje to isté ako predtým, čiže
a[0][0]: jednajedna
a[0][1]: jednadva
a[0][2]: jednatri
a[1][0]: dvajedna
a[1][1]: dvadva
a[1][2]: dvatri

a potreboval by som aby to vypísalo
a[0][0]: jednajedna
a[1][0]: dvajedna
a[0][1]: jednadva
a[1][1]: dvadva
a[0][2]: jednatri
a[1][2]: dvatri

Vypísať viacrozmerné pole som sa naučil asi tak 11 minút pred vytvorením témy ;)
panther
Profil
takto?

$count_array_1 = count($a);
$count_array_2 = count($a[0]);


for ($i = 0; $i < $count_array_2; $i++) {
    for ($j = 0; $j < $count_array_1; $j++) {
        echo 'a[' . $j . '][' . $i . ']: ' . $a[$j][$i] . '<br>';
    }
}

Ještě jsem prohodil indexy v echu, přepsal jsem se.

Doplním, že počítám s variantou, kdy budou všechna pole obsahovat stejný počet prvků. Jinak by sis musel zjistit, které pole obsahuje nejvíce prvků ($count_array_2) a uvnitř cyklu testovat existenci daného klíče, tedy isset.
Han
Profil
Je mi to ľúto, ale jediná zmena, ktorá nastala je, že sa vypisujú opačne indexy v a[][], pretože $i je číslo prvého "rozmeru" alebo ako sa to volá a $j je v ňom, čiže je číslo druhého rozmeru. - toto si opravil
Inak sa to vypisuje stále štýlom
a[0][0]: jednajedna
a[0][1]: jednadva
a[0][2]: jednatri
a[1][0]: dvajedna
a[1][1]: dvadva
a[1][2]: dvatri
Oprava, už to funguje.. neznámym spôsobom sa mi to zle okopírovalo alebo niečo :) Teraz to vypisuje dobre, tak ako som chcel.
a[0][0]: jednajedna
a[1][0]: dvajedna
a[2][0]: trijedna
a[0][1]: jednadva
a[1][1]: dvadva
a[2][1]: tridva
a[0][2]: jednatri
a[1][2]: dvatri
a[2][2]: tritri
Veľké ďakujem patrí pantherovi :)
panther
Profil
Han:
neznámym spôsobom sa mi to zle okopírovalo alebo niečo
spíše jsem to ještě opravoval... :-)
Han
Profil
Ešte niečo.. V tom skripte ako je $count_array_2 = count($a[0]); tak, ako by som to prerobil, keby bol prvým indexom poľa nejaký string a nie číslo? Teraz mi to píše undefined offset 0.
Spravím to inak.. Takže problém vyriešený :) ďakujem

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:

0