php:div中的“include”两次

时间:2012-07-09 05:28:27

标签: php function html

档案a.html

    <div id=1>
       <?php Include "a.php?parameter=1" ?>
    </div>

    <div id=2>
       <?php Include "a.php?parameter=2" ?>
    </div>

档案a.php:

    <? Php
    b;
    Function b {}
    ?>

调用a.html会产生错误:“无法在div 2中重新声明b()”。原因很容易理解 - 但最有效的解决方法是什么?

3 个答案:

答案 0 :(得分:3)

包含另一个PHP文件不会触发新的HTTP请求。您无法将参数传递给包含的文件。引号内的文本必须解析为磁盘上的文件,包括?parameter=1部分。

如果要将参数传递给包含的文件,请记住当前范围可用于包含的代码。您可以为全局/局部变量赋值,然后在包含的文件中使用它们。

// run.php

<?php
    $name = 'Bob';
    include 'inc.php';
?>

// inc.php

<?php
    echo "Hi, $name!\n";
?>

<强>更新

即使使用include,也不能多次声明同一个功能。相反,请在页面顶部包含声明函数的文件一次。使用require_once确保它只发生一次,如果找不到文件就会中断。然后,在需要函数效果的任何地方,在页面的脚本中调用它而不进行另一个包含。

// run.php

<?php require_once 'sayhi.php'; ?>

<div id="1">
    <?php sayhi('Bob'); ?>
</div>
<div id="2">
    <?php sayhi('Frank'); ?>
</div>

// sayhi.php

<?php
    function sayhi($name) {
        echo "Hi, $name!\n";
    }
?>

这会创建所需的输出。

<div id="1">
    Hi, Bob!
</div>
<div id="2">
    Hi, Frank!
</div>

答案 1 :(得分:1)

  

当包含文件时,它包含的代码会继承该变量   包含发生的行的范围。任何可用的变量   在调用文件中的那一行将在被调用的内容中可用   文件,从那时起。但是,所有功能和类   在包含文件中定义的具有全局范围。

请查看有关include()功能的信息。函数b()不应该重新声明,因为它已经存在。如果您尝试修改设置/传递给函数的变量,那么您将包含使用相应变量的函数的参数。

答案 2 :(得分:1)

如果你想为文件分配参数,那么你可以做两件事而不是包括文件,

1)包含没有任何参数,并使用可为您执行操作的参数调用函数 2)不要在任何地方包含它,而是在你想使用exec或popen时执行它,并将你的参数传递为argv:)