[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Почему это работает?
SnowWind
Здравствуйте уважаемые знатоки ответьте мне, если можно подробней на такой вопрос.
А вопрос следующий - почему подобный цикл работает???

<?php
$db = mysql_connect("localhost","sw","1");
mysql_select_db("firstbd",$db);
$result = mysql_query("SELECT * FROM marki",$db);
while ($myrow = mysql_fetch_array($result))
{
echo "Машина N -".$myrow['id']."<br>";
echo $myrow['marka']."<br>";
echo $myrow['model']."<br>";
echo $myrow['year']."<br>";
}
?>

Переменная $myrow до начала цикла нигде не объявлялась, а получается так, что объявляется в условии цикла, так же быть не должно? По идее д.б ошибки, но их нет почему???



Спустя 23 минуты, 46 секунд (7.08.2010 - 08:06) Michael написал(а):
В php как только переменной что то присваивается - вот она и определена. Дальше ей уже можно пользоваться везде где угодно.

Спустя 48 минут, 14 секунд (7.08.2010 - 08:54) SnowWind написал(а):
да это то всё понятно, Но не везде!
Это мы легко щас провери например так:

<html>
<head></head>
<body>
<?php

if (isset($z))
{
$z=0;
echo "переменная z = ".$z;
}
else
{
echo "такой переменной не существует";
}
?>
</body>
</html>



Вывод на экран следующий --> такой переменной не существует

Спустя 8 минут, 33 секунды (7.08.2010 - 09:03) Basili4 написал(а):
SnowWind
Вторая поверка не корректна Вы сначачала проверяете наличие перменной а затем её инициализируете т.е. объявляете.

В перво случае в условии цикла происходит объявление а затем и проверка

Спустя 33 минуты, 49 секунд (7.08.2010 - 09:37) SnowWind написал(а):
Basili4

Тогда что получается, действительно можно объявлять переменные в условиях циклов и функций? blink.gif

А тогда почему следующий код не зацикливается?

while ($d=0)
{
$d=0;
echo $d;
}


или так


while ($d=0)
{
echo $d;
}


Спустя 2 минуты, 26 секунд (7.08.2010 - 09:39) DedMorozzz написал(а):
(: а так:
while($d==0){
$d=0;
echo $d;
}

Спустя 49 минут, 49 секунд (7.08.2010 - 10:29) SnowWind написал(а):
DedMorozzz а если так, то тут уже другой смысл.
В 1ом примере мы присваиваем значение, а в этом приравниваем, тут-то цикл будет 100%, но почему в 1ом случае нет?

Спустя 4 минуты, 35 секунд (7.08.2010 - 10:34) Michael написал(а):
Цитата
но почему в 1ом случае нет?

while ($d=0)
{
$d=0;
echo $d;
}

1) зашли в условие цикла
2) присвоили $d=0
3) выражение вернет 0
4) имеем: while(0) - что не выполнится, т.к. 0 приведется к false

Спустя 18 минут, 55 секунд (7.08.2010 - 10:53) SnowWind написал(а):
Такой код ///

<html>
<head></head>
<body>
<?php

$b=7;
while ($d<10)
{
$d++;
echo $d;
}
?>
</body>
</html>


Приводит к такому выводу ///

Notice: Undefined variable: d in z:\home\sw.ru\www\index.php on line 18
[Денвер: показать возможную причину ошибки]
Notice: Undefined variable: d in z:\home\sw.ru\www\index.php on line 20
12345678910

///

Появляется ошибка, но всёравно вывод есть, а как он определил, что повышение на еденицу должно начаться с 0 ?

Спустя 9 минут, 43 секунды (7.08.2010 - 11:02) Michael написал(а):
php заметил ошибку вывел тебе предупреждение, а для себя установил переменную скорее всего в null - пустое значение.
А оператор ++ сначала преобразовывает свою переменную в число => null как раз станет нулем, а потом нарастил.

В общем, никогда так не делай.

Спустя 10 минут, 25 секунд (7.08.2010 - 11:13) Michael написал(а):
Вижу ты только начал изучать. Если нет книги, можешь начать читать тут
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.