Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/247.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在PHP中使用include命令的问题_Php_Function_Include - Fatal编程技术网

在PHP中使用include命令的问题

在PHP中使用include命令的问题,php,function,include,Php,Function,Include,我有一个PHP脚本,它使用include方法多次执行另一个PHP脚本(其中包含很多函数,有些是递归的),但是第二次我收到一个错误,说“include”PHP脚本中的一个函数不能重新声明 现在我明白了include所做的只是将引用脚本中的命令插入到调用它的脚本中,因此我像相同的函数一样声明了太多次,导致了一个讨厌的结果 那么,有人能告诉我应该如何处理这个问题吗 这是包含的脚本 <?php $_SESSION['det']=0; $x=array(); function valid($k) {

我有一个PHP脚本,它使用include方法多次执行另一个PHP脚本(其中包含很多函数,有些是递归的),但是第二次我收到一个错误,说“include”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语句的行为,只有 不同之处在于,如果文件中的代码已经 包括在内,将不再包括在内。顾名思义,它会的 只包括一次


您可以改为使用require_once()。在本例中,一切都在名称中;-)

您是否考虑过使用一次
include_
而不是
include
?如果您发布一些代码示例,这会很有帮助。请尝试使用
require
。并粘贴一些示例。我此时插入了代码。请忽略注释是罗马尼亚语。一旦使用include_,它会给出与第一次相同的结果,这很糟糕,因为我下次使用其他变量。它看起来仍然使用旧变量。