Php 为什么变量不可见?
我有一个带有PHP处理说明的XML文件: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
<?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
超出了函数的范围: