Autor | Zpráva | ||
---|---|---|---|
Someone Profil |
#1 · Zasláno: 10. 3. 2013, 02:01:48 · Upravil/a: Moderátor (editace znemožněna) 16. 10. 2014, 23:21:07
Autor: nakonec Joker
Odkaz na aktuální verzi textu: Základní kurz 9: Pole zveřejněno Odkud se vede diskuse k aktuálnímu stavu textu: První příspěvek po poslední revizi textu Níže původní obsah příspěvku Dobrý večer všem. Vzhledem k mé časové vytíženosti jsem velmi rád, že se mi podařilo najít si čas na zpracování kapitoly Pole, o kterou jsem se přihlásil. Nejedná se o finální verzi, spíše jsem to chtěl pojmout tak, aby došlo ke kritice nejen tématu samotného, ale i mého vyjadřování a způsobu, kterým se snažím předat informace. Jsem si vědom toho, že to mnohdy píšu opravdu polopatě (měl bych se mírnit? je to přítěž?), ale jedná se pouze o snahu z mé strany, aby čtenář danou problematiku co nejlépe pochopil. Dále se chci v kapitole zmínit o vestavěných funkcích sloužících pro práci s poli: array_sort(), in_array(), is_array() atd., ale jsou jich spousty a už tak se mi článek dost protáhl a to jsem se sotva dostal přes indexy :). Je to téma, ke kterému se toho dá napsat opravdu hodně, proto se ptám, zda to mám zkrátit, zmínit, že takové funkce existují a případně odkázat a nebo je mám rozebrat. Mimo to se dá povídat i o isset() a empty(), které se na pole dají také praktikovat. Stojí můj projev vůbec za to, aby sloužil jako výukový materiál druhým? Děkuji za každou reakci, připomínku, kritiku ať už kladnou či zápornou. |
||
Jan Tvrdík Profil |
#2 · Zasláno: 10. 3. 2013, 03:05:10
Someone:
Zkopírováno sem, Dropbox neumí zvýrazňovat kód. „měl bych se mírnit?“ ano :) „Dále se chci v kapitole zmínit o vestavěných funkcích sloužících pro práci s poli“ Moc se nerozepisuj, tohle je primárně téma pro samostatný článek. Z funkcí, které by asi bylo dobré zmínit už tady mě napadá count , in_array a array_key_exists (včetně rozdílu oproti isset a empty ).
Teď k vlastnímu článku. Překlepy, gramatiku, typografii a coding standard budu ignorovat. 1) vyhodit „po vědění toužící“ 2) vyhodit „a vše s ním spojené“ (protože to není pravda) 3) vyhodit „Abychom se mohli plně věnovat polím (…) musí mít nějaký důvod že?“ (vůbec nic tím nevysvětlíš, v textu se na to dále neodkazuješ). 4) vyhodit „Pokusme se přesunout aspoň trochu z teorie a ukažme si nějaké pole, které všichni jistě známe.“ 5) přepsat „Abychom se s poli mohli přesunout do programování, musíme si nejdříve osvojit dva pojmy. “ (nikam se nepřesouváme) 6) opravit a přesunout „Je důležité zmínit, že v PHP se indexuje od nuly, to znamená, že první zásuvka je označena nulou ne jedničkou.“ není pravda (platí pouze za předpokladu, že klíč není explicitně uveden) a pravděpodobně to akorát začátečníka zmate. Přesuň tu informaci radši až za první příklad. 7) vyhodit „Po dlouhé zdlouhavé teorii se můžeme pustit do praxe.“ (teorie nebyla zdlouhavá), případně nahradit něčím rozumnějším (třeba „A teď hurá na první příklad!“) |
||
Tori Profil |
#3 · Zasláno: 10. 3. 2013, 08:57:25
Someone:
Kdybyste vyhodil to "silové pole ze SF", tak za tímto: „Pole je soustava či soubor prvků, které mají nějaké společné znaky.“ máte prima příležitost ty společné znaky pole u lesa vs. sudoku konkretizovat: rozdělení na samostatné díly, které mají nějakou polohu (podle toho je najdeme; místo sudoku by byla lepší šachovnice), a nějakou hodnotu (čím je oseté, jaká šachová figurka tam stojí, jaké číslo v sudoku...). A pak abstraktní příklad s týdnem. „Indexy(klíče), Prvky pole(hodnoty)“ - tady bych nechala obě varianty pojmenování, protože to je poprvé zmíněno. Ale dál („Každá zásuvka má své označení(index) a nějaký svůj obsah(prvek,hodnotu)“, „Prvek je obsah zásuvk“ „zapíší hodnoty (prvky pole):“) bych spíš používala jen jedno pojmenování - závorky trochu narušují plynulost čtení. Jinak subjektivně "prvek pole" vnímám spíš jako "pár klíč-hodnota", nezaměňovala bych hodnoty a prvky - co na to ostatní? K těm indexům (je to jen návrh od člověka, co nikdy neučil, takže mě můžete klidně ignorovat): Možná na začátek prostě pár příkladů s různým počtem prvků: $prazdnePole = array(); $vikend = array('Sobota', 'Neděle'); $tyden = array('Pondělí', 'Úterý', 'Středa', 'Čtvrtek', 'Pátek', 'Sobota', 'Neděle'); $tyden[7] = 'Příští pondělí'; ). Potom zápis s $pole[] = 'hodnota' . Možná uvést příklad, že tyhle dvě varianty vytvoří stejné pole, a může se teda použít ta, která je v daném kontextu přehlednější:$vikend = array('Sobota', 'Neděle'); // anebo $vikend = array(); $vikend[] = 'Sobota'; $vikend[] = 'Neděle'; $pole = array(); $pole[3] = 'hodnota'; $pole[] = 'hodnota'; // dostane index 4 $pole[] = 'hodnota'; // dostane index 5 $pole[100] = 'hodnota'; $pole[] = 'hodnota'; // dostane index 101 „čemu se říká vícerozměrové pole“ - vícerozměrné. „-rozměrný“ je „mající nějaký rozměr(y)“, „-rozměrový“ znamená „týkající se rozměrů“ (např. „rozměrový a materiálový popis výrobku“). „Polím, které mají textové indexy se říká pole asociativní.“ - asi spíš „mají jen textové indexy“, ne? Možná doplnit, že PHP umožňuje oba typy indexů v jednom poli. „index může být řetězec, číslo nebo i proměnná.“ - možná byste ukázku s klíčem v proměnné mohl začlenit do některého příkladu. |
||
Someone Profil |
#4 · Zasláno: 10. 3. 2013, 09:53:36
Tori, Jan Tvrdík:
Děkuji za nápady a připomínky, pokusím se je v dohledné době zpracovat. |
||
Časová prodleva: 1 rok
|
|||
Joker Profil |
#5 · Zasláno: 24. 4. 2014, 20:03:04
Someone:
Došla řada na zveřejnění kapitoly o polích, jak to s ní vypadá? |
||
Časová prodleva: 4 dny
|
|||
Someone Profil |
#6 · Zasláno: 28. 4. 2014, 15:28:59
Ten čas ale letí o.O
Do konce týdne zkusím předvést upravenou verzi mého původního článku. Bude to stačit nebo bych to měl urychlit? |
||
Joker Profil |
#7 · Zasláno: 28. 4. 2014, 21:04:25
Someone:
„Bude to stačit nebo bych to měl urychlit?“ Nejlépe to už rovnou psát na Péhápko.cz. Jinak čím dříve tím lépe, následující kapitoly jsou už připravené. Případně v 10. kapitole se sice pole zmiňuje, ale jinak není s 9. moc provázaná, takže by ji šlo zveřejnit první. Ale jestli to bude do konce týdne, spíš zveřejním obě současně. Mimochodem, když už budou existovat celé tři články od jiného autora než já, založil jsem informativní stránku pro autory. |
||
Časová prodleva: 1 měsíc
|
|||
Joker Profil |
#8 · Zasláno: 8. 6. 2014, 08:31:45
Someone:
Další měsíc a kus pryč, jak to vypadá? Zveřejním zatím následující kapitolu. |
||
Časová prodleva: 2 měsíce
|
|||
Tomáš123 Profil |
#9 · Zasláno: 20. 8. 2014, 18:01:11
Someone:
Ahoj, ospravedlňujem sa, že prispievam do vlákna bez rád o zmene štylistickej stránky textu, či iným cenným radám. Text je napísaný celkom pochopiteľne, ale ako začiatočníkovi mi tam dosť chýba nejaký ozajstný príklad, kedy je pole dobre využiť, kedy sa naopak zdržať a v akých situáciách sa pole najčastejšie využíva. Mohli by ste to do článku doplniť prosím? |
||
Kubo2 Profil |
#10 · Zasláno: 20. 8. 2014, 23:36:53
Someone:
Hodila by sa zmienka o možnosti využitia „JavaScriptovej notácie“ tj. $p = [ 1, 2, 3 ]; pre zápis polí od PHP 5.4 |
||
Joker Profil |
#11 · Zasláno: 21. 8. 2014, 09:40:59
Mně hlavně chybí ta hotová kapitola, v ZK je kvůli ní díra a poslední 4 měsíce nemám ani žádnou informaci o stavu.
|
||
Časová prodleva: 2 měsíce
|
|||
Joker Profil |
#12 · Zasláno: 13. 10. 2014, 23:21:11
Jelikož stále není žádná informace o stavu a jediné co jsem našel byla ta první rozpracovaná verze, sepsal jsem vlastní kapitolu Pole.
Trochu se to rozlezlo a přidal jsem tam i zmínku o superglobálních polích. S tím původní osnova nepočítala, takže časem ještě upravím kapitolu o předávání dat na server, aby to reflektovala, a možná pár využití $_GET do kapitol mezi nimi. |
||
smiesek Profil |
#13 · Zasláno: 14. 10. 2014, 02:51:59
Joker:
ráda jsem si prošla kapitolu a přinutilo mě to si pohrát s využitím polí, jelikož se snažím pochytit princip fungování php. Děkuji za ni - je to srozumitelně napsáno. |
||
Tori Profil |
Joker:
- odkaz na kapitolu o dat. typech nefunguje, mřížka je zapsaná entitou - „ale pokud jsou delší anebo jich je hodně, je lepší je dělit na řádky tak...“ - dalo by se použít i "přehlednější", méně obecné, více vysvětlující - přehodila bych slova: „Zbývající skalární typy (float a bool) se při pokusu použít je jako klíč pole přetypují - možná doplnit: „Hodnoty prvků pole je možné takto číst i zapisovat,“ (vztahuje se k ukázce nad textem). - „Přiřazení hodnoty do pole na nějaký už existující klíč přepíše hodnotu, která pod tím klíčem v poli byla.“ - nějaká složitá věta, možná bych vyhodila označené - možná doplnit: „Lze také klíč vynechat a napsat jen prázdné hranaté závorky, v tom případě se vytvoří nový prvek a číselný klíč se mu přidělí automaticky způsobem popsaným výše.“ - v ukázce: ... "en"/"pozdrav" a "cs"/"pozdrav chybí uvozovky na konci
- „Toto řešení se používá pro výběr více různých čísel, pokud je potřeba jen jedno náhodné číslo z určitého rozmezí, je lepší použít funkci rand nebo mt_rand“ chybí tečka na konci, a před "pokud je potřeba" bych asi větu ukončila a začala novou (když čtu, vypadá to jako vedlejší věta k té předchozí). Anebo aspoň středník místo čárky. - chybí čárka: „Dá se odsud zjistit třeba jaký prohlížeč “ --> „Dá se odsud třeba zjistit, jaký prohlížeč “ - V části Manipulace s prvky pole bys mohl doplnit, že jako klíč se dá použít i výraz, který vrací skalární hodnotu (např. volání funkce nebo výpočet), používáš to pak v řešení č. 1. |
||
Jan Tvrdík Profil |
#15 · Zasláno: 14. 10. 2014, 09:13:55
„pokud jsou delší anebo jich je hodně, je lepší je dělit na řádky tak, jak je znázorněno v příkladu“
Zrovna v tom příkladu je to zformátováno dost divně, protože prvky nejsou pod sebou. Navíc to máš v každé ukázce jinak posunuté a zároveň nekonzistentní s tím, jak píšeš třeba if . Výrazně lepší je to podle mě takto:
$zakladniKurz = [ 1 => "Úvod", 2 => "Co je potřeba?", 3 => "Nastavení editoru", /* atd. */ ]; „dostane číslo o 1 vyšší, než nejvyšší již existující (nezáporný) číselný klíč“ To není úplně pravda, protože ten interní counter není resetován při unsetu. Nově vzniklý prvek by měl tedy obdržet číslo indexu o 1 vyšší, než nejvyšší nezáporný číselný index, který kdy v tom poli existoval. „Není ale důvod se vůbec snažit jiné typy než čísla a řetězce jako klíče v poli používat. “ Je, pro objekty se to řeší pomocí spl_object_hash nebo pomocí SplObjectStorage, ale tedy bych to asi nezmiňoval. „Poli, kde klíče nejsou čísla, ale řetězce, se říká asociativní pole.“ Já bych řekl, že asociativní je každé pole, kde indexy netvoří nepřerušovanou číselnou řadu začínající od 0. Nebo ještě jinak v neasociativním poli záleží pouze na pořadí prvků, nikoliv však už na hodnotách indexů. Tedy pole [7 => 'a'] je podle mě asociativní.
„Pro zjištění, jestli prvek pole existuje, je možné použít příkaz isset“ To není pravda, kvůli null hodnotám musíš pro ověření existence použít array_key_exists. Nicméně protože isset je výrazně rychlejší a pro většinu situací dostačující, tak jeho použití je preferováno.
U funkcí dost výrazně chybí funkce in_array .
|
||
Joker Profil |
#16 · Zasláno: 15. 10. 2014, 18:04:05
Tak jsem sice opravil ten odkaz jak píše Tori v první odrážce, zato se vymazala poslední část článku.
Jestli někdo máte původní obsah v cache, můžete si to pro jistotu někam uložit, kdyby se mi nepovedlo to obnovit? Díky. |
||
Marschmallow Profil |
#17 · Zasláno: 15. 10. 2014, 18:10:57
Joker:
„Jestli někdo máte původní obsah v cache, můžete si to pro jistotu někam uložit, kdyby se mi nepovedlo to obnovit?“ Jestli se Ti to obnovit nepovedlo, nabízím ke stažení zazipovaný Kurz 9 - Pole. |
||
Jan Tvrdík Profil |
#18 · Zasláno: 15. 10. 2014, 19:33:25
Joker:
„zato se vymazala poslední část článku“ Hlavně, že ten RS umí právě kvůli tomuhle verzování =) Mohl bych zakázat možnost „drobná změna“, pokud se změní víc než určité procentu obsahu. Nebo vytvářet skryté revize i při drobné změně. |
||
Joker Profil |
Jan Tvrdík:
„Hlavně, že ten RS umí právě kvůli tomuhle verzování =)“ Já si právě řekl, že kvůli opravě jednoho odkazu je zbytečné dělat novou revizi :) A jako na potvoru to byla první oprava po sepsání textu, takže dřívější revize ke které by se šlo vrátit neexistuje. Marschmallow: To už je ta ořízlá verze. |
||
Tomáš123 Profil |
#20 · Zasláno: 15. 10. 2014, 22:19:04
Joker:
Predvčerom som to prebehol... Keďže posledná správa bola od Tori, možno sa v mojej cache nachádza hľadaný obsah... Neviem však ako sa k nemu dostať. Zatiaľ nečistím, ak sa vám stratený obsah nepodarí obnoviť a budem jediný, kto sa tu ozval, môžte to so mnou skúsiť :-)... PS: Na konci kapitoly mi chýba "Vyzkoušejte si". |
||
lionel messi Profil |
Ja som si to uložil na disk v origináli hneď po vydaní a vidím, že sa to môže hodiť. Dal som to sem: Živá ukázka (samotný článok je v políčku HTML) — snáď pomôže.
|
||
Tori Profil |
#22 · Zasláno: 15. 10. 2014, 23:02:14
Já jsem od té doby už na tu stránku kliknula, takže se mi cache přepsala.
|
||
lionel messi Profil |
#23 · Zasláno: 15. 10. 2014, 23:13:32
Tori:
„Já jsem od té doby už na tu stránku kliknula, takže se mi cache přepsala.“ Aj mne, ale ako píšem [#21] — veľa stránok ukladám na disk, našiel som aj toto. Inak ukážku som upravil, aby bola ako-tak naformátovaná. |
||
Joker Profil |
#24 · Zasláno: 16. 10. 2014, 08:03:08
lionel messi:
Bezva, díky. Měl by být zpátky původní obsah, plus část úprav podle [#14] Tori. S dalšími opravami budu pokračovat. |
||
Joker Profil |
#25 · Zasláno: 16. 10. 2014, 23:18:47
Tori [#14]:
Snad vesměs opraveno, některé věty jsem úplně přeformuloval. „- možná doplnit: ‚Hodnoty prvků pole je možné takto číst i zapisovat,‘ (vztahuje se k ukázce nad textem).“ To nebylo psané k té ukázce, ale jako obecné prohlášení, že hodnoty lze číst i zapisovat. Jan Tvrdík: „Zrovna v tom příkladu je to zformátováno dost divně“ Nojo, v kódu to vypadá jinak. Upravil jsem formátování. > „dostane číslo o 1 vyšší, než nejvyšší již existující (nezáporný) číselný klíč“ > To není úplně pravda Hmm, zvážím, co s tím. Jsem se snažil se způsobem přidělování klíčů (který v drtivé většině použití funguje celkem intuitivně) moc nezdržovat. Tady to protentokrát ukončím a zbytek zase příště :-) |
||
Joker Profil |
#26 · Zasláno: 17. 10. 2014, 17:18:48
Zapracoval jsem (doufám) zbývající připomínky a zmínka o unsetu v [#15] mi připomněla, že tam vůbec nebyla zmíněna možnost prvky pole mazat (která paradoxně je zmíněna už v kapitole o proměnných), takže jsem přidal i to.
|
||
Časová prodleva: 4 měsíce
|
|||
Joker Profil |
#27 · Zasláno: 15. 2. 2015, 09:29:42
Na základě připomínky jinde jsem doplnil (varovný) popis k $_REQUEST.
|
||
Časová prodleva: 9 let
|
0