2012-02-07 14 views
-1

今日、多くの質問があります... 私はPaul Butlerのdiffアルゴリズムに使用したコードを修正することができました。しかし、コード自体に問題はないようですが、データベースから比較する2つのテキスト値を比較していません。それには特別な理由があるのだろうか?それとも、それはすべてがテーブルの中にあるという事実と関係がありますか?私はなぜ知らないPaul Butler diffアルゴリズム致命的なエラーと結果が表示されない

Fatal error: Cannot redeclare diff() (previously declared in /home/equinox/public_html/admins/profile-tool_elizabeth.php:125) in /home/equinox/public_html/admins/profile-tool_elizabeth.php on line 169

:$古いと$に対して異なる値を使用してコードを入れたときに確認してください、しかし、いずれかの方法ではありませんが、新しい、それは今で言う、またそこだけ空白... がありますつまり...ライン125は最初の「関数の差分」で、169は比較したい次の2つの値の「関数の差分」です。そこに何が起こっているかわからない...

は、ここでは基本的に全体のコードです:

<?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(); 

?> 

答えて

1

は何か他のものにdiffからあなたの関数の名前を変更します。このエラーメッセージは、同じスコープ内で同じ名前の2つの関数を宣言しようとした場合に発生します。

+0

diffの処理を行うには両方の関数が必要です...名前を変更しても問題ありませんか? – Elizabeth

+0

それらの名前を別々に指定し、新しい名前で呼び出す。同じ正確なことを行い、同じ名前を持つ2つの関数がある場合、それらの関数のうちの1つを常に削除することができます。 –

+0

彼らはすべてテキストを比較していますが、それぞれの関数で異なるものは... 3つのdiff関数を同じ部分にマージするとどういう意味ですか?名前を変更しようとします – Elizabeth