foreach

PHP 4 ( ne PHP 3 ) zahrnuje konstrukt foreach , podobně jako Perl a různé další jazyky . To poskytuje snadný způsob k iteraci přes pole . Existují dvě syntaxe ; ta druhá je menším , avšak užitečným rozšířením první :






První forma traverzuje pole dané výrazem array_expression . V každé iteraci je hodnota aktuálního elementu přiřazena do $value a vnitřní ukazatel na pole je zvýšen o jednotku ( tzn . v příští iteraci budete hledět na následující element ) .

Druhá forma dělá totéž , kromě toho , že aktuální klíč elementu bude v každé iteraci přiřazen do proměnné $key .

Poznámka : Když foreach Když foreach začne provádění první iterace , je vnitřní ukazatel automaticky nastaven na první element pole . To znamená , že před foreach nemusíte volat reset( ) .



Poznámka : Uvědomte si také , že foreach pracuje na kopii specifikovaného pole , nikoli na poli samotném , proto ukazatel na pole není modifikován tak , jako konstruktem each( ) a změny na vráceném elementu se na původním poli neprojeví .



Poznámka: foreach nepodporuje možnost potlačit chybová hlášení použitím '@'.

Můžete si všimnout , že následující příklady jsou funkčně totožné :

 
reset

 
(

 
$arr)

 
;

 
while

 
(list(

 
,

 
$value

 
)

 
=

 
each

 
($arr)

 
)

 
{

 
echo

 
"Hodnota

 
:

 
$value

 
br

 
\n"

 
;

 
}

 
foreach

 
($arr

 
as

 
$value

 
)

 
{

 
echo

 
"Hodnota

 
:

 
$value

 
br

 
\n"

 
;

 
}



Následující příklady jsou rovněž funkčně totožné:
 
reset

 
(

 
$arr)

 
;

 
while

 
(list($key

 
,

 
$value

 
)

 
=

 
each

 
($arr)

 
)

 
{

 
echo

 
"Klíč

 
:

 
$key

 
;

 
Hodnota

 
:

 
$value

 
br

 
\n"

 
;

 
}

 
foreach

 
($arr

 
as

 
$key

 
=

 
$value

 
)

 
{

 
echo

 
"Klíč

 
:

 
$key

 
;

 
Hodnota

 
:

 
$value

 
br

 
\n"

 
;

 
}





Další příklady demonstrující použítí :

 
/*

 
foreach

 
příklad

 
1

 
:

 
pouze

 
hodnota

 
*

 
/

 
$a

 
=

 
array

 
(

 
1

 
,

 
2

 
,

 
3

 
,

 
17)

 
;

 
foreach

 
($a

 
as

 
$v

 
)

 
{

 
print

 
"Současná

 
hodnota

 
\$a

 
:

 
$v.\n"

 
;

 
}

 
/

 
*

 
foreach

 
příklad

 
2

 
:

 
hodnota

 
(pro

 
ilustraci

 
je

 
vypsán

 
i

 
klíč

 
)

 
*

 
/

 
$a

 
=

 
array

 
(1

 
,

 
2

 
,

 
3

 
,

 
17)

 
;

 
$i

 
=

 
0

 
;

 
/

 
*

 
pouze

 
pro

 
ilustrativní

 
účely

 
*

 
/

 
foreach($a

 
as

 
$v

 
)

 
{

 
print

 
"\$a[$i

 
]

 
=

 
$v.\n"

 
;

 
$i++

 
;

 
}

 
/

 
*

 
foreach

 
příklad

 
3

 
:

 
klíč

 
a

 
hodnota

 
*

 
/

 
$a

 
=

 
array

 
(

 
"jedna

 
"

 
=

 
1

 
,

 
"dvě

 
"

 
=

 
2

 
,

 
"tři

 
"

 
=

 
3

 
,

 
"sedmnáct

 
"

 
=

 
17

 
)

 
;

 
foreach($a

 
as

 
$k

 
=

 
$v

 
)

 
{

 
print

 
"\$a[$k

 
]

 
=

 
$v.\n"

 
;

 
}

 
/

 
*

 
foreach

 
příklad

 
4

 
:

 
vícerozměrná

 
pole

 
*

 
/

 
$a[0][0

 
]

 
=

 
"a"

 
;

 
$a[0][1

 
]

 
=

 
"b"

 
;

 
$a[1][0

 
]

 
=

 
"y"

 
;

 
$a[1][1

 
]

 
=

 
"z"

 
;

 
foreach($a

 
as

 
$v1

 
)

 
{

 
foreach

 
($v1

 
as

 
$v2

 
)

 
{

 
print

 
"$v2\n"

 
;

 
    }

 
}

 
/

 
*

 
foreach

 
příklad

 
5

 
:

 
dynamická

 
pole

 
*

 
/

 
foreach(array(1

 
,

 
2

 
,

 
3

 
,

 
4

 
,

 
5

 
)

 
as

 
$v

 
)

 
{

 
print

 
"$v\n"

 
;

 
}