Няколко въпроса за PHP

nbacool2

Registered
Здравейте. Разучавам PHP и имам няколко въпроса, на които не мога да намеря отговори.

1. ++$value и $value ++. Каква е разликата. В една книга пише, че при единия вариант се увеличава стойността и се връща увеличената стойност, а пре другия връща стойността и след това увеличава с 1. Какво означава "връща стойността" ?

2. Функцията
function xxxx() { $value = $num +2 +4; return $value; }
Какво означава return $value, защо се използва и може ли без него.

3. Ако <?php
SESSION['name'] = $_GET['name'];

$name = $_SESSION['name'] ; ?>

$name няма да присвои стойността $_GET['name'], нали? И
ако се извика $_SESSION['name'] тя ще бъде равна на $_GET['name'], нали?
 
1. Едно и също е

2. Когато връща (return) стойност може да се присвои например на променлива :

$var = xxx();

и $var получава стойността върната от функцията xxx. Без него е съвсем различно и зависи от това какво ще правиш.

3. $name ще присвои стойността на $_GET
3.1. Да
 
Karcho каза:
1. Едно и също е

2. Когато връща (return) стойност може да се присвои например на променлива :

$var = xxx();

и $var получава стойността върната от функцията xxx. Без него е съвсем различно и зависи от това какво ще правиш.

3. $name ще присвои стойността на $_GET
3.1. Да

ОК. Мерси. Само не ми стана ясно за 1. Защо е едно и също и какво означава да връща стойност?
 
И на мен също точно това не ми е ясно, но пробвай и ще видиш, че е едно и също.
Винаги съм ползвал $var++;
Иначе тези горе са ти равни на 1+ $var и $var + 1
 
Не е едно и също първото.

$i = 1;
print( $i++ ); // Изписва 1 и $i става 2 след това

$i = 1;
print( ++$i ); // Изписва 2

Това значи "връща".
 
Значи да кажем, че с print( ++$i ); ако цикъла се завърти още един път пак ще върне 2 така ли?
 
tedo96 каза:
Значи да кажем, че с print( ++$i ); ако цикъла се завърти още един път пак ще върне 2 така ли?

$i = 1;
print( ++$i ); // Изписва 2
print( $i ); // Изписва пак 2 :)
 
StormBreaker каза:
tedo96 каза:
Значи да кажем, че с print( ++$i ); ако цикъла се завърти още един път пак ще върне 2 така ли?

$i = 1;
print( ++$i ); // Изписва 2
print( $i ); // Изписва пак 2 :)
Ахаа чак сега загрях... :D
Мерси Гоше! :D
 
StormBreaker каза:
tedo96 каза:
Значи да кажем, че с print( ++$i ); ако цикъла се завърти още един път пак ще върне 2 така ли?

$i = 1;
print( ++$i ); // Изписва 2
print( $i ); // Изписва пак 2 :)
Пробвах на сървър

<?php
function f1()
{ $test = 1;
++$test;
echo $test;
}
f1();
?>

и

<?php
function f1()
{ $test = 1;
$test++;
echo $test;
}
f1();
?>

и на двете изписва 2.
 
StormBreaker каза:
tedo96 каза:
Значи да кажем, че с print( ++$i ); ако цикъла се завърти още един път пак ще върне 2 така ли?

$i = 1;
print( ++$i ); // Изписва 2
print( $i ); // Изписва пак 2 :)
Добре тогава
$i = 1;
print( ++$i );
print( ++$i );
print( ++$i );
234 ли ще изписва?

А и тествах

<?php
$test = 1;
echo ++$test;
echo ++$test;
for ($test = 1; $test <= 6; ++$test)
{

echo $test;
}
?>

и изписва очаквано
23123456

Условието е по-малко или равно на 6. Добре, щом стигне до 6 то пак изпълнява условието и не трябва ли да увеличи на седем и да изпише 7?
 
<?php
$test = 1;
echo ++$test;
echo ++$test;
?>

23 си е да. Но ако напишеш:

<?php
$test = 1;
echo $test++;
echo $test++;
?>

ще пише 12

ПП. Цикъла като провери условието и види, че 7 не отговаря на него няма да изпълни това вътре.
 
Тоест условието трябва да важи и по време на изпълнението на цикъла? ако е x<=6 когато стигне до 6 в цикъла се прибавя 1 и става седем, което не отговаря на условието. Правилно ли разсъждавам?
 
nbacool2 каза:
Тоест условието трябва да важи и по време на изпълнението на цикъла? ако е x<=6 когато стигне до 6 в цикъла се прибавя 1 и става седем, което не отговаря на условието. Правилно ли разсъждавам?

Имаш
PHP:
for ($i = 0; $i <= 6; $i++)
{
echo $i;
}

Ще стане това:
- $i = 0;
- проверява 0 <= 6 -> вярно -> изпълнява echo $i; -> 0
- Увеличава $i с 1
- проверява 1 <= 6 -> вярно -> изпълнява echo $i; -> 1
- Увеличава $i с 1
- проверява 2 <= 6 -> вярно -> изпълнява echo $i; -> 2
- Увеличава $i с 1
- проверява 3 <= 6 -> вярно -> изпълнява echo $i; -> 3
- Увеличава $i с 1
- проверява 4 <= 6 -> вярно -> изпълнява echo $i; -> 4
- Увеличава $i с 1
- проверява 5 <= 6 -> вярно -> изпълнява echo $i; -> 5
- Увеличава $i с 1
- проверява 6 <= 6 -> вярно -> изпълнява echo $i; -> 6
- Увеличава $i с 1
- проверява 7 <= 6 -> не е вярно -> спира цикъла като не изпълнява това вътре. Тоест няма да се покаже 7 накрая
 
StormBreaker каза:
nbacool2 каза:
Тоест условието трябва да важи и по време на изпълнението на цикъла? ако е x<=6 когато стигне до 6 в цикъла се прибавя 1 и става седем, което не отговаря на условието. Правилно ли разсъждавам?

Имаш
PHP:
for ($i = 0; $i <= 6; $i++)
{
echo $i;
}

Ще стане това:
- $i = 0;
- проверява 0 <= 6 -> вярно -> изпълнява echo $i; -> 0
- Увеличава $i с 1
- проверява 1 <= 6 -> вярно -> изпълнява echo $i; -> 1
- Увеличава $i с 1
- проверява 2 <= 6 -> вярно -> изпълнява echo $i; -> 2
- Увеличава $i с 1
- проверява 3 <= 6 -> вярно -> изпълнява echo $i; -> 3
- Увеличава $i с 1
- проверява 4 <= 6 -> вярно -> изпълнява echo $i; -> 4
- Увеличава $i с 1
- проверява 5 <= 6 -> вярно -> изпълнява echo $i; -> 5
- Увеличава $i с 1
- проверява 6 <= 6 -> вярно -> изпълнява echo $i; -> 6
- Увеличава $i с 1
- проверява 7 <= 6 -> не е вярно -> спира цикъла като не изпълнява това вътре. Тоест няма да се покаже 7 накрая

StormBreaker, наистина много ми помогна! :) Заслужаваш си точката :)
Благодаря на всички, които се включиха.
btw, честити 4500 мнения :wink:
 

Back
Горе