Using arrays : print_r() function returns result as simple "Array" for diff algorithm on newest questions tagged arrays – Stack Overflow

I’m using a diff algorithm (the Paul Butler one), which I now got working somewhat. I’ve discovered that I needed mysql_fetch_array() rather than mysql_fetch_object(), which solved warnings and error messages, but now when I try print_r() to display the result, the result is simply “Array” instead of the field from the database I need it to display and compare… when I call a different function, it seems to show the fields, but doesn’t compare them rather than listing them twice and with Array ( [0] => Array ( [d] => Array ( [0] => before it.

Any idea why? And yes I’ve googled this and looked it up and spent about two days trying to work it out.

Here’s the parts of the script:

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

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

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

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

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

    $newappearance = mysql_query("SELECT personality FROM profile_edit WHERE userid = '$id'") or die(mysql_error());    
    $newappearance = mysql_fetch_array($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>History :: </td>
         <td> 
";

function diffhistory($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(
        diffhistory(array_slice($oldhistory, 0, $omax), array_slice($newhistory, 0, $nmax)),
        array_slice($newhistory, $nmax, $maxlen),
        diffhistory(array_slice($oldhistory, $omax + $maxlen), array_slice($newhistory, $nmax + $maxlen)));
}

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

}
print_r (diffhistory($oldhistory, $newhistory));

See Answers


source: http://stackoverflow.com/questions/9196178/print-r-function-returns-result-as-simple-array-for-diff-algorithm
Using arrays : using-arrays

Leave a Reply