PHP中的XML解析和函数问题

时间:2018-02-23 14:53:34

标签: php xml

我正在尝试在PHP中使用XML文件。 在我尝试引入功能的那一刻,它运作良好。

$mytournament = simplexml_load_string(utf8_encode(file_get_contents('tournament.xml')));


foreach($mytournament->CLUB as $CLUB){
    foreach ($CLUB->PERSON as $PERSON){
    echo $PERSON['FIRSTNAME'] . " " . $PERSON['LASTNAME'];
    }
}


function NOM($ARG1){
foreach($mytournament->CLUB as $CLUB){
    foreach ($CLUB->PERSON as $PERSON){
        if ($ARG1 == $PERSON['IDPERS']) {
            echo $PERSON['FIRSTNAME'] . " " . $PERSON['LASTNAME'];
        }
        else {
            echo "unknown name";
        }
    }
}
}

第一个foreach运行良好,而第二个函数在调用函数后发出错误。

  

警告:为foreach()提供的参数无效

我不明白如何解决这个问题似乎与php(??)中的函数用法有关。

感谢任何提示

1 个答案:

答案 0 :(得分:2)

变量$mytournament在全局范围内,并且您尝试在函数内访问它,并且在不同的范围内,它变为未定义,因此显示了无效的参数错误。您必须将其作为参数传递给函数或使用global关键字调用它。

$mytournament = simplexml_load_string(utf8_encode(file_get_contents('tournament.xml')));


foreach($mytournament->CLUB as $CLUB){
    foreach ($CLUB->PERSON as $PERSON){
    echo $PERSON['FIRSTNAME'] . " " . $PERSON['LASTNAME'];
    }
}

使用global

进行调用
function NOM($ARG1){
    global $mytournament;
    foreach($mytournament->CLUB as $CLUB){
        foreach ($CLUB->PERSON as $PERSON){
            if ($ARG1 == $PERSON['IDPERS']) {
                echo $PERSON['FIRSTNAME'] . " " . $PERSON['LASTNAME'];
            }else {
                echo "unknown name";
             }
        }
    }
}

或将其作为参数传递

function NOM($ARG1, $mytournament){
    foreach($mytournament->CLUB as $CLUB){
        foreach ($CLUB->PERSON as $PERSON){
            if ($ARG1 == $PERSON['IDPERS']) {
                echo $PERSON['FIRSTNAME'] . " " . $PERSON['LASTNAME'];
            }else {
                echo "unknown name";
             }
        }
    }
}