我正在尝试在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(??)中的函数用法有关。
感谢任何提示
答案 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";
}
}
}
}