Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
Lukáš
Tvůrce
Avatar
Lukáš:6.5.2019 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.5.2019 21:25
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:7.5.2019 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í
+2,50 Kč
Řešení problému
 
Nahoru Odpovědět
7.5.2019 8:08
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:7.5.2019 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.5.2019 8:15
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:7.5.2019 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.5.2019 8:22
 
Nahoru Odpovědět
7.5.2019 8:21
Avatar
Lukáš
Tvůrce
Avatar
Odpovídá na Peter Mlich
Lukáš:7.5.2019 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.5.2019 9:25
Avatar
Lukáš
Tvůrce
Avatar
Lukáš:7.5.2019 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.5.2019 9:36
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:7.5.2019 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.5.2019 10:51
 
Nahoru Odpovědět
7.5.2019 10:50
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:7.5.2019 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.5.2019 10:56
 
Nahoru Odpovědět
7.5.2019 10:55
Avatar
Lukáš
Tvůrce
Avatar
Odpovídá na Peter Mlich
Lukáš:8.5.2019 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.5.2019 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.