Autor Zpráva
robbie
Profil *
v poli mám uvedeny 3 prvky, v učebnici píší, že při použití cyklu foreach se provede příkaz pro každý prvek, ale me se provede vždy jen pro poslední prvek pole, je chyba v učebnici?měly by se tedy vypsat všechny 3 indexy se třemi prvky nebo jen ten poslední, uvádím kod pro ilustraci. Děkuji

<?php
$pole=array(1=>10,2=>100,3=>300,);

foreach ($pole as $index=>$prvek);
echo "Nalezen index: ", $index, " prvek: ",$prvek,"<br>";
?> 
juriad
Profil
Je chyba na konci 4. řádku, máš tam středník. Tedy pro každý prvek vykonáš prázdný příkaz a poslední index v proměnné zůstane. Odstraň ten středník.
Someone
Profil
Kód, který se má provést v každém cyklu se uzavírá do bloku složených závorel.
Řetězce se spojují tečkami:

$pole = array(1=>10,100,300); // pokud majít být indexy od 1 tak stačí uvést index jen u prvního a zbytek se dočísluje

foreach($pole as $index => $prvek) {
    echo "Nalezen prvek " . $prvek . " s indexem " . $index;
}
robbie
Profil *
děkuji za radu, asi pravdepodobně byla chyba,že v knize mají čárky místo teček v propojení řetězců, ikdyž nechápu, jak to že to neházelo hned chybu v prohlížeči, ale prohlížeč to ignoroval.
Tori
Profil
robbie, Someone:
V tom je malý rozdíl:
echo "a" . "b" . "c"; nejdřív vytvoří řetězec "abc" a pak ho pošle na výstup.
echo "a", "b", "c"; pošle na výstup "a", potom "b", potom "c" - každé zvlášť.
IMHO by jedině při vypisování nějakých velkých objemů dat (např. vykreslení šablony) mohlo být lepší použít čárky (a teda možná šetřit paměť), ale jinak je to myslím věc programátorského stylu - tzn. „piš jak chceš, ale jednotně“. :)


robbie:
Uzavírání cyklů do závorek je spíš z opatrnosti (viz defenzivní programování). Jako tělo bloků if, while, for, foreach apod. se považuje buď vše, co je mezi složenými závorkami, anebo první následující příkaz. Akorát když pak chcete doplnit, že se v cyklu má provést další příkaz, tak bez závorek snadno vznikají chyby typu:
if (podminka)
    echo 'tohle se provede jen pri splneni podminky';
    echo 'tohle si myslim, ze taky, ale ve skutecnosti se provede vzdy';
Uzavření bloků do slož.závorek je výhodné i pokud používáte editor / vývojové prostředí, které vám vnitřek bloku automaticky odsadí.

Podobně i čárka za posledním prvkem pole v [#1]: při zápise array(1, 2, 3, 4) je zbytečná, ale tady:
$pole = array(
    'klic' => $jinePole['vnoreny']['klic'],
    'klic2' => 123456,
);
je výhodnější ji za posledním prvkem psát (abych v případě, že budu někdy chtít doplnit další prvek, editovala jen jeden řádek místo dvou).
petr 6
Profil
robbie:
asi pravdepodobně byla chyba,že v knize mají čárky místo teček v propojení řetězců

Ne, chyba byla ve středníku na 4. řádku. Viz [#2]

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: