在PHP中使用include命令的问题
我有一个PHP脚本,它使用include方法多次执行另一个PHP脚本(其中包含很多函数,有些是递归的),但是第二次我收到一个错误,说“include”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
$_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_,它会给出与第一次相同的结果,这很糟糕,因为我下次使用其他变量。它看起来仍然使用旧变量。