我有这种带有PHP处理指令的XML文件:
<?xml version="1.0" encoding="UTF-8"?>
<?php
$a = 8;
?>
<?php function add_some() { ?>
<element attr="<?php echo $a ?>"/>
<?php } ?>
<elements>
<?php
add_some();
add_some();
?>
</elements>
当我使用php test.xml
处理它时,我得到:
<?xml version="1.0" encoding="UTF-8"?>
<elements>
<element attr="PHP Notice: Undefined variable: a in test.xml on line 5
"/>
<element attr="PHP Notice: Undefined variable: a in test.xml on line 5
"/>
</elements>
请告诉我如何解决它?
答案 0 :(得分:1)
请熟悉PHP变量范围http://php.net/manual/en/language.variables.scope.php
在你的情况下,你应该将$a
作为参数传递给add_some()
或者在其正文中使用global $a;
(但这是个坏主意),否则它会超出{{1的可见范围功能。
答案 1 :(得分:1)
$a
在函数范围之外,您应该在函数内部定义变量或将其用作参数。
了解变量范围: http://php.net/manual/en/language.variables.scope.php
<?xml version="1.0" encoding="UTF-8"?>
<?php function add_some($a) { ?>
<element attr="<?php echo $a ?>"/>
<?php } ?>
<elements>
<?php
add_some(8);
add_some(8);
?>
</elements>
您应该阅读用户自定义函数的php手册:http://php.net/manual/en/functions.user-defined.php
答案 2 :(得分:1)
这不起作用因为它没有在函数中定义。
有几种方法可以解决这个问题:
1)使用全局变量:
echo $a; // working
function add_some() {
global $a;
echo $a; // working
2)如果该功能特定于该功能,请将其传递给该功能:
echo $a; // working
function add_some($a) {
echo $a; // working
答案 3 :(得分:0)
a
是一个全局变量。除非通过global
关键字明确告知全局变量,否则函数无法读取或写入全局变量:
$foo = 'bar';
function some_func() {
global $foo;
echo $foo; //bar
}
答案 4 :(得分:0)
它应该是这样的:
<?xml version="1.0" encoding="UTF-8"?>
<?php
$a = 8;
function add_some() { ?>
<element attr="<?php global $a; echo $a; ?>"/>
<?php } ?>
<elements>
<?php
add_some();
add_some();
?>
</elements>