Форум администраторов игровых серверов

Форум администраторов игровых серверов (https://forum.zone-game.info/TT.php)
-   PHP (https://forum.zone-game.info/forumdisplay.php?f=125)
-   -   Заковыка с переменными внутри цикла. (https://forum.zone-game.info/showthread.php?t=15771)

Aristocrat 03.09.2011 11:14

Заковыка с переменными внутри цикла.
 
Уважаемые форумчане.

Нужда заставила писать себе парсер 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>\"";
С уважением.

Aquanox 04.09.2011 12:18

Re: Заковыка с переменными внутри цикла.
 
для работы с XML пользуемся SimpleXML либо DOM
http://php.net/manual/en/book.simplexml.php
http://php.net/manual/en/book.dom.php


Текущее время: 19:02. Часовой пояс GMT +3.

Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2023, Jelsoft Enterprises Ltd. Перевод: zCarot