Php 为什么变量不可见?

Php 为什么变量不可见?,php,xml,Php,Xml,我有一个带有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_som

我有一个带有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变量范围

在您的情况下,您应该将
$a
作为参数传递给
add_some()
或使用
全局$a在它的主体中(但这是个坏主意),否则它将不在
add_some()
函数的可视范围内


PS:发现任何模板引擎(Smarty、Blaze),因为意大利面代码是坏的,坏东西。

$a
不在函数范围内,您应该在函数内定义变量或将其用作参数

阅读有关变量作用域的信息:



a
是一个全局变量。函数不能读取或写入全局变量,除非通过
global
关键字明确通知它们:

$foo = 'bar';
function some_func() {
    global $foo;
    echo $foo; //bar
}

这不起作用,因为它未在函数中定义

有几种方法可以做到这一点:

1)使用全局变量:

 echo $a; // working
 function add_some() {
   global $a;
   echo $a; // working
echo $a; // working
  function add_some($a) {
    echo $a; // working
2)如果特定于该函数,则将其传递到该函数中:

 echo $a; // working
 function add_some() {
   global $a;
   echo $a; // working
echo $a; // working
  function add_some($a) {
    echo $a; // working

应该是这样的:

<?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>


基本变量范围问题-
$a
超出了函数的范围: