Показать сообщение отдельно
Непрочитано 03.09.2011, 11:14   #1
Аватар для Aristocrat
Мастер

Автор темы (Топик Стартер) Заковыка с переменными внутри цикла.

Уважаемые форумчане.

Нужда заставила писать себе парсер XML на PHP.
Парсер должен, в итоге, разбирать скормленный ему XML по частям, подставлять в нужные части загруженые из MySQL данные и генерировать на выходе HTML страницу с этим измененным XML.

Нашел парсер, который просто разбирает и выводит 1 в 1 XML через HTML.

Я довольно плохо знаю PHP, т.е на уровне общих знаний по программированию(работа с переменными, логическими действиями, выражениями).

Имеется следующий проблемный код.

PHP код:
function startElement($parser$name$attribs
{
    echo 
"&lt;<font color=\"#0000cc\">$name</font>";
    if (
count($attribs)) {
        
$f "12345-6;";

        foreach (
$attribs as $k => $v) {
            if (
$k == "id") {
                
$f $v;
            }
            if (
$v == "skill") {
                echo 
" <font color=\"#009900\">$k</font>=\"<font 
                        color=\"#ff0000\">
$v</font>\"";
                echo 
" <font color=\"#009900\">val</font>=\"";
                echo 
"<font color=\"#ff0000\">$f</font>\"";
                break;
            }
            else {
                echo 
" <font color=\"#009900\">$k</font>=\"<font 
                        color=\"#990000\">
$v</font>\"";
            }
        }
    }
    echo 
"&gt;";

который превращает строки:
Цитата:
<set name='weight' val='150' />
<set name='material' val='wood' />
<set name='crystal_type' val='none' />
<set name='sellable' val='false' />
<set name='dropable' val='false' />
<set name='skill' val='21045-1;3267-1;23051-1;' />
в
Цитата:
<set name='weight' val='150'>
<set name='material' val='wood'>
<set name='crystal_type' val='none'>
<set name='sellable' val='false'>
<set name='dropable' val='false'>
<set name='skill' val='12345-6;'>

Проблема в том, что код видит присвоение значения переменной только перед циклом, т.е
Код:
$f = "12345-6;";
В том время, как дополнительное условие внутри цикла foreach
Код:
                      if ($k == "id") {
				$f = $v;
			}
не видит. Подскажите, как мне можно при соблюдения условия, передать значение $f в строку
Цитата:
echo "<font color=\"#ff0000\">$f</font>\"";
С уважением.
Aristocrat вне форума Ответить с цитированием