Autor | Zpráva | ||
---|---|---|---|
Jiří Ráb Profil |
Ahoj chtěl jsem se zeptat jak z tohoto pole dostat data setřídit, pomocí jakého cyklu? Viz kod
<?php $znamky["4.B"]["Tobiáš"]["Ondřej"]["PG"]["2016-09-23"] = 4; $znamky["4.B"]["Tobiáš"]["Ondřej"]["PG"]["2016-09-26"] = 3; $znamky["4.B"]["Tobiáš"]["Ondřej"]["TV"]["2016-09-27"] = 1; $znamky["4.B"]["Tobiáš"]["Ondřej"]["CJ"]["2016-09-28"] = 1; $znamky["4.B"]["Tobiáš"]["Ondřej"]["TV"]["2016-10-07"] = 1; $znamky["4.B"]["Tobiáš"]["Ondřej"]["MA"]["2016-10-22"] = 1; $znamky["4.B"]["Tobiáš"]["Ondřej"]["MA"]["2016-10-29"] = 4; $znamky["4.B"]["Tobiáš"]["Ondřej"]["MA"]["2016-11-05"] = 4; $znamky["4.B"]["Tobiáš"]["Ondřej"]["CJ"]["2016-11-14"] = 3; $znamky["4.B"]["Tobiáš"]["Ondřej"]["MA"]["2016-11-19"] = 4; $znamky["4.B"]["Tobiáš"]["Ondřej"]["CJ"]["2016-11-19"] = 2; $znamky["4.B"]["Tobiáš"]["Ondřej"]["PG"]["2016-11-25"] = 3; $znamky["4.B"]["Tobiáš"]["Ondřej"]["CJ"]["2016-12-03"] = 2; var_dump($znamky); ?> Potřeboval bych ty známky uložit do jednorozměrných polí. $PG=array(); $TV=array(); $CJ=array(); $MA=array(); Ale nevím jak to udělat kvůli těm, datumu. |
||
Tomášeek Profil |
#2 · Zasláno: 22. 11. 2017, 15:27:55
Jiří Ráb:
„pomocí jakého cyklu?“ Třeba foreach .
|
||
Jiří Ráb Profil |
zkoušel jsem to ale nejde mi to viz posílam jak
foreach ($znamky as $trida) { foreach ($trida as $jmeno) { foreach ($jmeno as $jmeno2) { foreach ($jmeno2 as $predmet) { foreach ($predmet as $datum) { foreach ($datum as $key => $value) { switch ($predmet) { case 'PG': $PG[]=$value; break; case 'MA': $MA[]=$value; break; case 'TV': $TV[]=$value; break; case 'CJ': $CJ[]=$value; break; default: echo 'chyba'; break; } } } } } } } nevím proč to nejde |
||
Keeehi Profil |
#4 · Zasláno: 22. 11. 2017, 15:59:07
První tři klíče jsou stále stejné, to předpokládám není pravda vždy, že? Zeptám se tedy takto: Snažíš se tedy o získání známek pro každý předmět nezávisle na třídě, jménu a datu?
Proč máš klíče v poli rozdělené na jméno a příjmení? Důležitější je, proč to pole vůbec takto vypadá? Asi to taháš z databáze a takovýto formát tvoříš, ale jiný by byl lepší. Jestli chceš, rád ti poradím. Stačí na to totiž dvourozměrné pole. |
||
Jiří Ráb Profil |
Tohle pole jsem dostal od učitele za ukol rozřídit do jednorozměrných polí,snažím se o to aby byli pole
$PG=array(); $TV=array(); $CJ=array(); $MA=array(); Nechapu proc nam dal takto rozměrne pole souhlasím s tím,že by stacilo dvourozměrné.Asi chce abychom uměli pracovat s takto hodně rozměrným polem ale já jsem to zkoušel třídit pomocí těch foreach cyklu a nejde mi to vubec ty známky maji byt závisle pouze na předmětu protože třída jmeno a příjmení jsou furt stejne mě pro třídění tam vadí to datum strasne |
||
Tomášeek Profil |
#6 · Zasláno: 22. 11. 2017, 16:16:03
Jiří Ráb:
$predmet je pole, nelze jej tedy takhle použít ve switchi , ten očekává string .
Soudě podle předchozích dotazů, myslím, že bys měl ve škole dávat více pozor. Tohle jsou banální věci (nejen toto, ale i ta předchozí témata), která na diskusi vůbec nepatří. |
||
Keeehi Profil |
Jiří Ráb:
„ty známky maji byt závisle pouze na předmětu protože třída jmeno a příjmení jsou furt stejne“ Pokud jsou ty klíče konstantní, tak se to dá velmi zjednodušit. foreach ($znamky["4.B"]["Tobiáš"]["Ondřej"] as $predmet => $dny) { switch ($predmet) { case 'PG': $PG = array_values($dny); break; case 'MA': $MA = array_values($dny); break; case 'TV': $TV = array_values($dny); break; case 'CJ': $CJ = array_values($dny); break; default: echo 'chyba'; } } |
||
Jiří Ráb Profil |
#8 · Zasláno: 22. 11. 2017, 17:36:11
děkuju ti moc nedelam to schvalně že bych sem psal ale s tímhle jsem si fakt nevedel rady a ve škole jsme brali jenom dvojrozměrné pole
|
||
Keeehi Profil |
#9 · Zasláno: 22. 11. 2017, 17:45:42
Jiří Ráb:
Vícerozměrná pole jsou úplně stejná jak dvourozměrná (z technického hlediska). Jediné, co je na nich těžší je mentální hledisko - s každou úrovní je trochu náročnější si udržet přehled o tom, v které úrovni se člověk vlastně pohybuje. Jelikož je ale ["4.B"]["Tobiáš"]["Ondřej"] konstantní, redukuje se problém vlastně na dvourozměrné pole.
|
||
Jiří Ráb Profil |
Zkusil jsem to spustit a nějak to nejde píše to chyby viz kod a foto
<?php $znamky["4.B"]["Tobiáš"]["Ondřej"]["PG"]["2016-09-23"] = 4; $znamky["4.B"]["Tobiáš"]["Ondřej"]["PG"]["2016-09-26"] = 3; $znamky["4.B"]["Tobiáš"]["Ondřej"]["TV"]["2016-09-27"] = 1; $znamky["4.B"]["Tobiáš"]["Ondřej"]["CJ"]["2016-09-28"] = 1; $znamky["4.B"]["Tobiáš"]["Ondřej"]["TV"]["2016-10-07"] = 1; $znamky["4.B"]["Tobiáš"]["Ondřej"]["MA"]["2016-10-22"] = 1; $znamky["4.B"]["Tobiáš"]["Ondřej"]["MA"]["2016-10-29"] = 4; $znamky["4.B"]["Tobiáš"]["Ondřej"]["MA"]["2016-11-05"] = 4; $znamky["4.B"]["Tobiáš"]["Ondřej"]["CJ"]["2016-11-14"] = 3; $znamky["4.B"]["Tobiáš"]["Ondřej"]["MA"]["2016-11-19"] = 4; $znamky["4.B"]["Tobiáš"]["Ondřej"]["CJ"]["2016-11-19"] = 2; $znamky["4.B"]["Tobiáš"]["Ondřej"]["PG"]["2016-11-25"] = 3; $znamky["4.B"]["Tobiáš"]["Ondřej"]["CJ"]["2016-12-03"] = 2; $PG=array(); $TV=array(); $CJ=array(); $MA=array(); foreach ($znamky["4.B"]["Tobiáš"]["Ondřej"] as $predmet => $dny) { switch ($predmet) { case 'PG': $PG[] = values($dny); break; case 'MA': $MA[] = values($dny); break; case 'TV': $TV[] = values($dny); break; case 'CJ': $CJ[] = values($dny); break; default: echo 'chyba'; } } var_dump($TV); ?> Závažná chyba: Uncaught Error: Volání k nedefinovaným hodnotám funkcí () v C: \ wamp64 \ www \ php_projekt \ vicerpol.php on line 27 (!) Chyba: volání nedefinovaných hodnot funkcí () v C: \ wamp64 \ www \ php_projekt \ vicerpol.php na řádku 27 Stack volání # Čas Paměť Funkce Umístění 1 0,0009 374536 {hlavní}( ) ... \ vicerpol.php : 0 nevím proč to hlasí nedefinovanou hodnotu funkce |
||
Keeehi Profil |
Sorry, ta funkce je
array_values , Nějak mi to tam vypadlo a pak jsem to rozkopíroval. V původním příspěvku opraveno.
+ ty jsi si tam přidal [] za ty proměnné, ty tam nemají co dělat |
||
Jiří Ráb Profil |
dík
už jsem je dal pryc vzniklo by mě tím zase dvojpole |
||
Keeehi Profil |
#13 · Zasláno: 22. 11. 2017, 18:21:04
Jiří Ráb:
„už jsem je dal pryc vzniklo by mě tím zase dvojpole“ Přesně tak. Ono by šlo proměnnou $dny zase projít foreachem a hodnoty vkládat postupně do toho pole a v tom případě by tam byly správně. Ale funkce array_values vrací pole hodnot (vlastně přepíše všechny klíče na číselné) a tam by se to nehodilo.
|
||
Jiří Ráb Profil |
#14 · Zasláno: 22. 11. 2017, 18:57:20
díky za pomoc
|
||
Jiří Ráb Profil |
Jenom se tě potřebuji ješte jednou zeptat ty $dny je teda pole nebo ty předměty?
začínám v tom mít zmatek jelikož ty mas ukladas array_values($dny),tak jestli jsou teda ty $dny pole já jsem si myslel teda původne že pole jsou ty předměty a ty maji indexy ty datumy a svoje hodnoty |
||
Keeehi Profil |
#16 · Zasláno: 22. 11. 2017, 22:03:58
Chápu, že to je trochu zmatečné.
1) Moje proměnná $predmet a tvoje proměnná $predmet obsahují něco jiného. V tvém případě to je pole se známkami kde klíče jsou datumy, v mém případě je to klíč takového pole a to samotné pole je v proměnné $dny .
2) Moje pojmenování proměnné $dny není úplně nejšťastnější. Lepší by bylo to pojmenovat $znamkyPredmetu .
|
||
Jiří Ráb Profil |
#17 · Zasláno: 23. 11. 2017, 12:01:59
Díky ti za odpověd
|
||
Časová prodleva: 5 let
|
0