Въпрос относно циклите в PHP

Fakeheal каза:
Някой може ли да ми обясни разликата между тези три цикъла:
1.for()
2.while()
3.foreach()
Аз доколкото знам for само за цифри
while за заявки и за цифри.
foreach само за array;
:idea:
 
Mоже :)

for се използва по следния начин:

PHP:
for ($x=0; $x<5; $x++) {
 echo $x . "<br />;
}

Общо взето имаш променлива $x, която в началото е равна на 0.
След това се прави проверка дали дадено условие е вярно.
В случая това е $x<5. Ако е вярно, скрипта продължава и изпълнява това което е между { }.
В този случай ще изпише 0.
След като мине един цикъл, промелнивата се увеличава с 1. Това се прави с третия параметър на for-a - $x++.
И започва нов цикъл. Пак проверява дали $x < 5 и така докато $x стане = 5.
В този случай се излиза от цикъла.


while се използва по следния начин:
PHP:
$x = 0;
while ($x < 5) {
 echo $x . "<br />;
$x++
}


Тук задаваме промелнива, която е равна на 0.
След това започва while цикъла и проверява дали тази променлива ($x)
е по-малка от упределено условие. В този случай дали е по-малка от 5.
Ако отговора е "да" цикъла продължава и изпълнява това което е между { }.
След като се завърти един цикъл в края променливата се увеличава с 1 ($x++)
И така докато променливата стане равна на 5 и не отговоря на условието.


foreach се използва по следния начин:

PHP:
$testArrayas;
$testArray["Edno"] = "1";
$testArray["Dve"] = "2";
$testArray["Tri"] = "3";
$testArray["Chetiri"] = "4";

foreach( $testArrayas $key => $value){
	echo "Nomer: " . $key . ", Age: “ . $value . " <br />";
}

Тук имаме масив $testArrayas. За да извадим стойноста на всеки елемент от масива използваме foreach();

Всъщност казваме всеки елемент от масива да се запише в променливата $key, а всяка стойност в променливата $value.
Така цикъла премината през всеки отделен елемент на масива.

:)
 
Ev0luti0N каза:
Fakeheal каза:
Някой може ли да ми обясни разликата между тези три цикъла:
1.for()
2.while()
3.foreach()
Аз доколкото знам for само за цифри
while за заявки и за цифри.
foreach само за array;
:idea:

Какво значи 'само за цифри', цифрите само регулират кога да почва и спира въртенето (loop), иначе може да се сожи всичко.

$array = array('asd-1', 'asd-2', 'asd-3');

for($i = 0;$i < sizeof($array);$i++)
{
// $i е номера на ключа ($array[2])
// $array[$i] asd-nth
}

Не разбирате ли, че всичко са просто низове записани по различни начини, заявките са сериализирани низове, както масивите и класовете например.

Foreach работи само с масиви.
For работи със всичко.
While пак работи със всичко, като предварително трябва да си сложиш какъв да е старта на операцията, преди условието.

while($i < 5)
{
// $i = undefined, затова трябва да се зададе предварително, докато с for можеш да си го сложиш още в началото на условието.
}
 
for обикновено се използва за случаите когато знаеш точно колко итерации ще извърши цикъла. Примерно искаш да повториш един код 10 пъти. Тогава най-добре е да използваш цикъла for

PHP:
for($i = 1; $i <=10; $i++)
{
echo $i."<br />";
}

(изключваме случаите, които е дал StormBreaker)

While се използва когато искаш даден код да се повтаря докато дадено условие е true. Когато стане false спира изпълнението. Т.е не знаеш както в горния код, че ще се изпълни 10 пъти. Веднъж може да се изпълни 1 път, следващия опит 9 пъти, после 11 и така.

PHP:
while($test != 2) {
		$test = rand(1, 10);
		echo $test."<br />";
	}

Тук изкарваш случайно число между 1 и 10 докато не се падне 2. Тогава прекратява изпълнението на скрипта. Можеш да видиш, че всеки път ще изкара различен брой числа.

do-while се използва по същия начин като while. Разликата е, че при while проверката на условието се изпълнява в началото и има вероятност скрипта да не се изпълни нито веднъж. Докато при do-while проверката на условието се прави в края и винаги поне веднъж се изпълнява скрипта.

Този скрипт няма да изкара никакъв резултат
PHP:
$test = 2;
	while($test != 2) {
		echo $test;
	}

А този ще се изпълни веднъж
PHP:
$test = 2;
	 do {
		echo $test;
	} while($test != 2)

Foreach най-често се използва да се обходи масив :)
 
Между for и while разликата е много малка.

PHP:
$i = 0;
while ( $i < 10 )
{
// ne6to

$i++;
}

PHP:
for ( $i = 0; $i < 10; $i++ )
{
// ne6to
}

For е за удобство. Тези двата кода са напълно еднакви
 

Back
Горе