область видимости

SA739

Cogito, ergo sum
область видимости

доброго времени суток

вот такой вопросишко:
PHP:
while (list ($a, $b) = each ($array1))
 { while ($r=db_fetch($q))
        {
        if ($b = $r) echo "i find it!"; 
        }
}
так вот переменная $b принимает начальное значение a во втором цикле не изменяется
 

KR

alive in new life
if ($b = $r) --- всегда true;

если ты не получаешь надпись, то возможно нет "попадания" во вложенный while
 

SA739

Cogito, ergo sum
факт фактом, но мне нужно найте совпадения индексов в массивах..
каким образом лучше поступить?

array_key_exists не предлагать, нужны только совпадения индексов.
 

SA739

Cogito, ergo sum
Автор оригинала: KR
if ($b = $r) --- всегда true;

если ты не получаешь надпись, то возможно нет "попадания" во вложенный while
с $a=$b сглупил.. просто с примерчиком ошибся..

мне какраз и нужно "попадание" вол вложенный while
 

SA739

Cogito, ergo sum
Автор оригинала: tony2001
факт.

if ($b = $r) echo "i find it!";
to
if ($b == $r) echo "i find it!";

?
PHP:
while (list ($a, $b) = each ($array1)) 
{ while ($r=db_fetch($q)) 
        { 
        echo $a; //<--------- вот тут переменная не меняется 
        } 
          echo $a; //<----------- а вот тут меняется
}
 

Demiurg

Guest
>if ($b = $r) --- всегда true;
не всегда

SA739, что значит меняется, не меняется ?
 

SA739

Cogito, ergo sum
первый while перебирает массив $array1 и присваивает
$a - ключи, $b - индексы.
второй while перебирает массив получаемый запросом к таблице и сравнивает каждое выбранное значение поля со значением значения массива $array1 в текущей итерации.

значение переменной $b во вложенном while не изменяется.
почему?
 

KostyaCat

мы где-то рядом
может наоборот стоит попробовать ?

выбирать из базы а потом пробегать по массиву array1
или вообще выбирать из базы с учетом этого array'а ?
 

Demiurg

Guest
у тебя второй while проходит только один раз, потом записи кончаются.
 

SA739

Cogito, ergo sum
проблему решил так:
PHP:
while ($row=db_fetch($res)) 
			{
				$w[]=$row[0];
			}
while (list ($num, $name) = each ($dow))
{
	$checked="";
	if (in_array ($num, $w)) $checked="checked";
	echo "<tr>\n";
	echo "<td>$name</td><td><input type=checkbox name=$num $checked></td>\n";
	echo "</tr>\n";
}
 
Сверху