【问题标题】:Problems with using include command in PHP在 PHP 中使用 include 命令的问题
【发布时间】:2014-05-17 22:27:33
【问题描述】:

我有一个 PHP 脚本,它使用 include 方法多次执行另一个 PHP 脚本(其中包含很多函数,有些是递归的),但第二次我收到一个错误,说“包含" PHP 脚本无法重新声明。

现在我知道 include 所做的只是将引用脚本中的命令插入到调用它的脚本中,因此我喜欢相同的函数声明太多次导致可憎。

那么,有人可以告诉我应该如何解决这个问题吗?

这是包含的脚本

<?php
$_SESSION['det']=0;
$x=array();
function valid($k)
{
for($i=1;$i<$k;$i++)
    if($GLOBALS['x'][$i]==$GLOBALS['x'][$k])
        return 0;
return 1;
}
function semn($k)
{
$nr=0;
for($i=1;$i<$k;$i++)
    for($j=$i+1;$j<=$k;$j++)
        if($GLOBALS['x'][$i]>$GLOBALS['x'][$j])
            $nr++;
if($nr%2==0)
    return 1;
else
    return -1;
}
 function determinant($k)
 {
$prod=1;
for($i=0;$i<$k;$i++)
    $prod*=$_SESSION['matrix'][$i][$GLOBALS['x'][$i+1]-1];
$_SESSION['det']+=semn($k)*$prod;
   }
   function solve($k,$n)
   {
for($i=1;$i<=$n;$i++)
{
    $GLOBALS['x'][$k]=$i;
    if(valid($k))
        if($k==$n)
        {
            determinant($k);
        }
        else
            solve($k+1,$n);
}
 }
   $n=$_SESSION['size'];
 solve(1,$n);
 unset($x);
 ?>

这是包含的脚本。

 <?php


  include 'determinant.php';


  if(!$_SESSION['det'])
   {
       echo "The inverse cant be calculated cause the determinant is equla to 0.";
   }
    else
     {
$detA=$_SESSION['det'];

//Transpusa
for($i=0;$i<$_SESSION['size']-1;$i++)
    for($j=$i+1;$j<$_SESSION['size'];$j++)
    {
        $aux=$_SESSION['matrix'][$i][$j];
        $_SESSION['matrix'][$i][$j]=$_SESSION['matrix'][$j][$i];
        $_SESSION['matrix'][$j][$i]=$aux;
    }


$Dcar=array();

//Matricile caracteristice
for($i=0;$i<$_SESSION['size'];$i++)
{
    for($j=0;$j<$_SESSION['size'];$j++)
    {

        $r=0;
        $c=0;
        $semn=1;
        $a=array();

        $_SESSION['matrix'][$i][$j]
        for($m=0;$m<$_SESSION['size'];$m++)
        {
            if($m==$i)
                continue;
            else
            {

                for($n=0;$n<$_SESSION['size'];$n++)
                {
                    if($n==$j)
                    continue;
                    else
                    {
                        $a[$r][$c]=$_SESSION['matrix'][$m][$n];
                        $c++;
                    }
                }
                $r++;
                $c=0;
            }
        }

        //Apelarea functiei determinant pentru fiecare matrice
        $aux=$_SESSION['matrix'];
        $_SESSION['matrix']=$a;
        $_SESSION['size']-=1;

        include 'determinant.php';
        $_SESSION['matrix']=$aux;
        $_SESSION['size']+=1;

        $Dcar[$i][$j]=($semn*$_SESSION['det'])/$detA;
        $semn*=-1;


    }
}


for($i=0;$i<$_SESSION['size'];$i++)
{
    for($j=0;$j<$_SESSION['size'];$j++)
        echo $Dcar[$i][$j]." ";
    echo "<br>";
}


 }

  ?>

【问题讨论】:

  • 您是否考虑过使用include_once 而不是include
  • 如果您发布一些代码示例会很有帮助。
  • 试试require。并粘贴一些示例。
  • 我此时插入了代码。请忽略 cmets 是罗马尼亚语。

标签: php function include


【解决方案1】:

使用include_once()函数。

遵循文档:

这是一种类似于 include 语句的行为,只有 不同之处在于,如果文件中的代码已经 包括在内,将不再包括在内。顾名思义,它将 只包含一次。

【讨论】:

  • 使用 include_once 它给了我第一次相同的结果,这很糟糕,因为我下次使用其他变量。
【解决方案2】:

您可以使用 require_once() 代替。在这种情况下,一切都在名称中;-)

【讨论】:

  • 它看起来仍然使用旧变量。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-09-30
  • 2015-05-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-24
  • 2020-01-27
相关资源
最近更新 更多