Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/237.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 Paul Butler diff算法致命错误,结果未显示_Php_Diff - Fatal编程技术网

Php Paul Butler diff算法致命错误,结果未显示

Php Paul Butler diff算法致命错误,结果未显示,php,diff,Php,Diff,哇,我今天有很多问题。。。 所以我设法修复了Paul Butler的diff算法的代码。然而,虽然代码本身似乎没有问题,但它没有比较我希望它从数据库中比较的两个文本值。我想知道是不是有什么特别的原因?或者可能是因为它们都在一张桌子上?不确定,但不管怎样,那里只有一个空白。。。 此外,在为$old和$new添加不同值的代码时,现在会显示: 致命错误:无法在第169行的/home/equinox/public_html/admins/profile-tool_elizabeth.php:125中重新

哇,我今天有很多问题。。。 所以我设法修复了Paul Butler的diff算法的代码。然而,虽然代码本身似乎没有问题,但它没有比较我希望它从数据库中比较的两个文本值。我想知道是不是有什么特别的原因?或者可能是因为它们都在一张桌子上?不确定,但不管怎样,那里只有一个空白。。。 此外,在为$old和$new添加不同值的代码时,现在会显示:

致命错误:无法在第169行的/home/equinox/public_html/admins/profile-tool_elizabeth.php:125中重新声明diff()

我不知道为什么。。。第125行是我要比较的下两个值的第一个“函数差异”,第169行是“函数差异”。不知道那里发生了什么

下面是整个代码:

<?php

  session_start();

   while ($nSELECT = mysql_fetch_object($SELECT)) {

        echo "

          <tr bgcolor=\"#000000\">

           <td><a href=\"$PHP_SELF?id=" . $nSELECT->userid . "\">" . getName($nSELECT->userid) . "</a></td>


          </tr>

        ";

      }

    }

    echo "</table><p>";

  } elseif (empty($_GET['s']) && !empty($_GET['id'])) {

    $SELECT = mysql_query("SELECT * FROM profile_edit WHERE userid = '$id'") or die(mysql_error()); 
    $SELECT = mysql_fetch_object($SELECT);

    $USERINFO = mysql_query("SELECT * FROM members WHERE id = '$id'") or die(mysql_error());
    $USERINFO = mysql_fetch_object($USERINFO);

    $oldhistory = mysql_query("SELECT history FROM members WHERE id = '$id'") or die(mysql_error());
    $oldhistory = mysql_fetch_object($oldhistory);

    $newhistory = mysql_query("SELECT history FROM profile_edit WHERE userid = '$id'") or die(mysql_error());   
    $newhistory = mysql_fetch_object($newhistory);

    $OLDPERSONALITY = mysql_query("SELECT personality FROM members WHERE id = '$id'") or die(mysql_error());
    $OLDPERSONALITY = mysql_fetch_object($OLDPERSONALITY);

    $NEWPERSONALITY = mysql_query("SELECT personality FROM profile_edit WHERE userid = '$id'") or die(mysql_error());   
    $NEWPERSONALITY = mysql_fetch_object($NEWPERSONALITY);

    $OLDAPPEARANCE = mysql_query("SELECT description FROM members WHERE id = '$id'") or die(mysql_error());
    $OLDAPPEARANCE = mysql_fetch_object($OLDAPPEARANCE);

    $NEWAPPEARANCE = mysql_query("SELECT personality FROM profile_edit WHERE userid = '$id'") or die(mysql_error());    
    $NEWAPPEARANCE = mysql_fetch_object($NEWAPPEARANCE);




    echo "

      <form action=\"$PHP_SELF?id=$id&s=a\" method=\"post\">

      <table cellpadding=\"5\" cellspacing=\"1\" border=\"0\" align=\"center\" bgcolor=\"#234904\">

        <tr bgcolor=\"#000000\">

         <td>Username :: </td>

         <td><a href=\"/profile.php?id=".$SELECT->userid."\" target=\"_blank\">" . getName($SELECT->userid) ."</a> (Click to see current profile in new window)</td>

        <tr bgcolor=\"#000000\">

         <td>Species :: </td>

         <td>" . $USERINFO->species2 ." -> ". $USERINFO->subspecies ." (". $USERINFO->clan .")</td>

        <tr bgcolor=\"#000000\">

         <td>History :: </td>
         <td> 
";

function diff($oldhistory, $newhistory){
    foreach($oldhistory as $oindex => $ovalue){
        $nkeys = array_keys($newhistory, $ovalue);
        foreach($nkeys as $nindex){
            $matrix[$oindex][$nindex] = isset($matrix[$oindex - 1][$nindex - 1]) ?
                $matrix[$oindex - 1][$nindex - 1] + 1 : 1;
            if($matrix[$oindex][$nindex] > $maxlen){
                $maxlen = $matrix[$oindex][$nindex];
                $omax = $oindex + 1 - $maxlen;
                $nmax = $nindex + 1 - $maxlen;
            }
        }   
    }
    if($maxlen == 0) return array(array('d'=>$oldhistory, 'i'=>$newhistory));
    return array_merge(
        diff(array_slice($oldhistory, 0, $omax), array_slice($newhistory, 0, $nmax)),
        array_slice($newhistory, $nmax, $maxlen),
        diff(array_slice($oldhistory, $omax + $maxlen), array_slice($newhistory, $nmax + $maxlen)));
}

function htmlDiff($oldhistory, $newhistory){
    $diff = diff(explode(' ', $oldhistory), explode(' ', $newhistory));
    foreach($diff as $k){
        if(is_array($k))
            $ret .= (!empty($k['d'])?"<del>".implode(' ',$k['d'])."</del> ":'').
                (!empty($k['i'])?"<ins>".implode(' ',$k['i'])."</ins> ":'');
        else $ret .= $k . ' ';
    }
    return $ret;
}



echo "</td>

        </tr>


        <tr bgcolor=\"#000000\">

         <td>Description :: </td>

         <td>";

function diff($oldappearance, $newappearance){
    foreach($oldappearance as $oindex => $ovalue){
        $nkeys = array_keys($newappearance, $ovalue);
        foreach($nkeys as $nindex){
            $matrix[$oindex][$nindex] = isset($matrix[$oindex - 1][$nindex - 1]) ?
                $matrix[$oindex - 1][$nindex - 1] + 1 : 1;
            if($matrix[$oindex][$nindex] > $maxlen){
                $maxlen = $matrix[$oindex][$nindex];
                $omax = $oindex + 1 - $maxlen;
                $nmax = $nindex + 1 - $maxlen;
            }
        }   
    }
    if($maxlen == 0) return array(array('d'=>$oldappearance, 'i'=>$newappearance));
    return array_merge(
        diff(array_slice($oldappearance, 0, $omax), array_slice($newappearance, 0, $nmax)),
        array_slice($newappearance, $nmax, $maxlen),
        diff(array_slice($oldappearance, $omax + $maxlen), array_slice($newappearance, $nmax + $maxlen)));
}

function htmlDiff($oldappearance, $newappearance){
    $diff = diff(explode(' ', $oldappearance), explode(' ', $newappearance));
    foreach($diff as $k){
        if(is_array($k))
            $ret .= (!empty($k['d'])?"<del>".implode(' ',$k['d'])."</del> ":'').
                (!empty($k['i'])?"<ins>".implode(' ',$k['i'])."</ins> ":'');
        else $ret .= $k . ' ';
    }
    return $ret;
}


echo "</td>


        </tr>


        <tr bgcolor=\"#000000\">

         <td>Description :: </td>

         <td>";

function diff($oldappearance, $newappearance){
    foreach($oldappearance as $oindex => $ovalue){
        $nkeys = array_keys($newappearance, $ovalue);
        foreach($nkeys as $nindex){
            $matrix[$oindex][$nindex] = isset($matrix[$oindex - 1][$nindex - 1]) ?
                $matrix[$oindex - 1][$nindex - 1] + 1 : 1;
            if($matrix[$oindex][$nindex] > $maxlen){
                $maxlen = $matrix[$oindex][$nindex];
                $omax = $oindex + 1 - $maxlen;
                $nmax = $nindex + 1 - $maxlen;
            }
        }   
    }
    if($maxlen == 0) return array(array('d'=>$oldappearance, 'i'=>$newappearance));
    return array_merge(
        diff(array_slice($oldappearance, 0, $omax), array_slice($newappearance, 0, $nmax)),
        array_slice($newappearance, $nmax, $maxlen),
        diff(array_slice($oldappearance, $omax + $maxlen), array_slice($newappearance, $nmax + $maxlen)));
}

function htmlDiff($oldappearance, $newappearance){
    $diff = diff(explode(' ', $oldappearance), explode(' ', $newappearance));
    foreach($diff as $k){
        if(is_array($k))
            $ret .= (!empty($k['d'])?"<del>".implode(' ',$k['d'])."</del> ":'').
                (!empty($k['i'])?"<ins>".implode(' ',$k['i'])."</ins> ":'');
        else $ret .= $k . ' ';
    }
    return $ret;
}


echo "</td>

        </tr>

        <tr bgcolor=\"#000000\">

         <td colspan=\"2\" style=\"text-align: center\"><input type=\"submit\" value=\"Accept\"></td>

        </tr>

      </table>

      </form>

      <p><br>

      <form action=\"$PHP_SELF?id=$id&s=d\" method=\"post\">

    <table cellpadding=\"5\" cellspacing=\"1\" border=\"0\" align=\"center\" bgcolor=\"#234904\">

      <tr bgcolor=\"#000000\">

         <td>Reason :: </td>

         <td><textarea name=\"reason\" rows=\"6\" cols=\"30\"></textarea></td>

        </tr>

        <tr bgcolor=\"#000000\">

         <td colspan=\"2\" style=\"text-align: center\"><input type=\"submit\" value=\"Deny\"></td>

        </tr>

      </table>

      </form>

    ";

  } 


  incFooter();

?>

将函数从
diff
重命名为其他函数。如果试图在同一作用域中声明两个同名函数,则会出现此错误消息。

我需要两个函数来执行不同的操作。。。如果我给它重新命名,这不重要吗?给其中一个取不同的名字,然后叫它新名字。如果你有两个函数做相同的事情并且有相同的确切名称,你可以删除其中一个。它们都在比较文本,但每个函数中的文本不同。。。你的意思是将三个diff函数合并到同一部分吗?我将尝试重命名。我可能想了解函数的工作原理。除了参数有不同的名称外,函数的作用完全相同。函数定义中的变量名是函数内部调用的名称,而不是外部变量的名称。肯定会这样做…-。-非常感谢你的帮助!它消除了错误,我将所有“diff”部分重命名为“diff…”,与函数相关。。。但是字段仍然是空的。。。知道为什么吗?