Java týden Java týden
Pouze tento týden sleva až 80 % na celý Java e-learning!
Brno? Vypsali jsme pro vás nové termíny školení OOP v Brně!
Avatar
Lukáš
Redaktor
Avatar
Lukáš:6. května 21:25

Ahoj, potřeboval bych vytvořit pole pro každý prvek v daném poli.

Zkusil jsem:

predmety = ["Matematika", "Dejepis", "Fyzika", "Anglictina", "Cestina", "Telocvik"]

predmety.each do |predmet|
  predmet = Array.new
end

Problém je v tom, že nevím jak zapsat |predmet| jako první slovo v řádku aby se to počítalo jako proměnná. V textu to je např.:

puts "#{predmet}"

Chci docílit: Ovšem ^^ toto řešení nefunguje a pole nevytvoří. PS: Je to domácí úkol tak kdyby jste mě mohli jen tak nějak lehce popostrčit.

Díky, Lukáš

 
Odpovědět 6. května 21:25
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:7. května 8:08
predmety = ["Matematika", "Dejepis", "Fyzika", "Anglictina", "Cestina", "Telocvik"]
predmety.each do |predmet|

V php by toto slo zapsat jako

foreach ($predmety as $key=>$value) // obecne nazvy
foreach ($predmety as $value)
foreach ($predmety as $item) // item je takove univerzalni slovo
foreach ($predmety as $predmet) // to je take ok

Pokud se ma s tim nejak dal pracovat, urcite potrebujes $key. A nebo aspon pointer. V php

foreach ($predmety as $key=>$value)
  {$predmety[$key] = array();}
foreach ($predmety as &$value) // tady si nejsem jisty, jestli se to tak v php da zapsat
  {$value = array();}

Predpokladam, ze podobnou konstrukci budes muset pouzit u sebe v nevim jakem jazyce.

Akceptované řešení
+20 Zkušeností
+1 bodů
Řešení problému
 
Nahoru Odpovědět 7. května 8:08
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:7. května 8:15

A v php jeste funguje...

$predmety = array("Matematika", "Dejepis", "Fyzika", "Anglictina", "Cestina", "Telocvik")
list($predmet) = $predmety;
echo $predmet; // Matematika
list($predmet1, predmet2) = $predmety;
echo $predmet2; // Dejepis

Jakoze to dokaze 'namapovat' na promene.
Potom jsou v ruznych jazycich prikazy map, ktere nevim, zda nedelaji neco podobneho.
A jeste existuji cykly s lambda, v pythonu, ktere tusim delaji neco podobneho jako foreach v php.

# Program to filter out only the even items from a list
my_list = [1, 5, 4, 6, 8, 11, 3, 12]
new_list = list(filter(lambda x: (x%2 == 0) , my_list))
# Output: [4, 6, 8, 12]
print(new_list)

Jestli to spravne chapu, tak vytvor list, filtrovanim hodnot z pole my_list pomoci lambda cyklu. Vyber z nej jen prvky, kde x%2=0 (sude). To mi teda foreach zapis prijde prehlednejsi :) Ale tady se menusi psat if pro podminku.

 
Nahoru Odpovědět 7. května 8:15
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:7. května 8:21
// A jeste pouzivam obcas v php
// $_POST = array ('checkbox'=>true, 'name'=>'peter', 'psw'=>'heslo');
foreach($_POST as $key=>$value)
    {$$key = $value;}
//    {${$key} = $value;}
var_dump($checkbox, $name, $psw)
// Ale spis pouzivam bezpecnejsi variantu se seznamem klicu
$keys = array('checkbox', 'name', 'psw');
foreach($keys as $key) // to je ten pripad foreach ($predmety as $item)
    {$$key = isset($_POST[$key]) ? $_POST[$key] : '';}
Editováno 7. května 8:22
 
Nahoru Odpovědět 7. května 8:21
Avatar
Lukáš
Redaktor
Avatar
Odpovídá na Peter Mlich
Lukáš:7. května 9:25

Zapomněl jsem napsat, že se jedná o ruby.. Celou dobu jsem si myslel, že jsem v ruby sekci

 
Nahoru Odpovědět 7. května 9:25
Avatar
Lukáš
Redaktor
Avatar
Lukáš:7. května 9:36

//Má myšlenka byla, udělat pole s předměty, do kterého by uživatel mohl přidat nějaký předmět a pak pro každý předmět udělat pole, do kterého by se zapisovali známky. S těmito poly bych pak pracoval dále.. vypsat známky pro daný předmět atd..

 
Nahoru Odpovědět 7. května 9:36
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:7. května 10:50

Mno, ja bych uvazoval databazove.

predmety: id_predmet, nazev, popis // predmety[id_predmet] = data
znamky: id, id_predmet, id_ucitel, id_student, id_zapsal, datum_zapsal // znamky[id] = data

(v pripade, ze znamku zapisuje sekretarka za ucitele, tak by se melo logovat, kdo to vlastne zapsal)
Cili, pokud bych zapisoval znamky, zapisoval bych je do specialni tabulky, pole. Nikoliv primo k predmetu. Pokud, tak bych pouzil od zacatku strukturovane pole.

predmety [ znamky:[dalsi_pole], info:data, ...]

Ale spis zvlast, fakt.

Editováno 7. května 10:51
 
Nahoru Odpovědět 7. května 10:50
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:7. května 10:55

Dokonce jsem si jednou v javascriptu udelal funkce, ktera mi s polem pracuji jako s databazi. Jenom takove jednoduche, insert (create row by structure), select (name=text), delete. Celkem, se mi databazova mysleni zamlouva pro ukladani dat. (tusim, ze slo o webRTC chat pokus)

Editováno 7. května 10:56
 
Nahoru Odpovědět 7. května 10:55
Avatar
Lukáš
Redaktor
Avatar
Odpovídá na Peter Mlich
Lukáš:8. května 13:06

Super, díky moc na konec jsem to udělal přes klíče a k ním přidával hodnoty. Byla to pouze úloha na procvičení, takže nemusela být tolik složitá a DB jsem ani nemohl použít.

 
Nahoru Odpovědět 8. května 13:06
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 9 zpráv z 9.