2010-03-12 7 views
3

J'ai ces tableaux:PHP: différence visuelle entre 2 tableaux

<?php 

// New 
$array1 = array(
    array(
     'g_id' => '1', 
     'g_title' => 'Root Admin', 
     'g_perm_id' => '1', 
     'g_bitoptions' => '0' 
    ), 
    array(
     'g_id' => '2', 
     'g_title' => 'Member', 
     'g_perm_id' => '2', 
     'g_bitoptions' => '32' 
    ), 
    array(
     'g_id' => '3', 
     'g_title' => 'Banned', 
     'g_perm_id' => '3', 
     'g_bitoptions' => '0' 
    ) 
); 

// Old 
$array2 = array(
    array(
     'g_id' => '1', 
     'g_title' => 'Admin', 
     'g_perm_id' => '1', 
     'g_bitoptions' => '0' 
    ), 
    array(
     'g_id' => '2', 
     'g_title' => 'User', 
     'g_perm_id' => '2', 
     'g_bitoptions' => '0' 
    ), 
    array(
     'g_id' => '4', 
     'g_title' => 'Validating', 
     'g_perm_id' => '4', 
     'g_bitoptions' => '0' 
    ) 
); 

Ce que je veux est une différence visuelle HTML entre eux, comme cette image: diff http://imageshack.us/a/img519/3237/diffe.png

Tout le monde sait ici tout 3ème classe qui fait cela? J'en ai regardé quelques-uns mais aucun d'eux ne l'avait. =/

Merci d'avance.

+0

Avez-vous décidé de le faire? Je suis intéressé par la solution – greenLizard

Répondre

1

Ceci n'est peut-être pas directement lié à votre question. Si vous examinez l'exemple d'image à partir du lien, je crains que la zone en surbrillance ne soit définie par javascript et/ou plutôt que par PHP - justification: car vous ne pouvez pas dire à un simple diff() de mettre en surbrillance.

Alors, essayez quelque chose comme ceci:

Lorsque vous « imprimer » quelque chose dans le navigateur, assigner des attributs à la couleur, par exemple

<php code> 
    <div class="red">blah blah blah</div> 
    <div class="green">blah blah blah</div> 
</php code> 

Le code php doit faire une chose que du côté serveur : pour trouver les différentes parties, et ainsi générer les attributs de classe correspondants.

Désolé, je n'ai pas vraiment le temps de vous écrire une solution pour le moment.

En un mot, l'exécution va comme ceci:

  1. Vous avez des objets PHP côté serveur
  2. Utilisez php pour trouver la différence
  3. utiliser PHP pour imprimer pur code html
  4. utilisation css pour mettre en évidence la zone correspondante

Je suis sûr que cela fera l'affaire. Et un avantage de le faire de cette façon est que vous avez un contrôle arbitraire sur la façon dont les choses vont ressembler à l'écran.

Utilisez certainement peut tout faire sur le côté serveur, qui est, à tous les styles hardcode avec d'autres balises html

0

Regardez PEAR Text_Diff. Utilisation affichée à http://www.hawkee.com/snippet/2238/

Faites ensuite le texte diff de var_export ($ array1, TRUE) et var_export ($ array2, TRUE) et vous obtiendrez la sortie comme demandé.

PS. D'après la page du projet Text_Diff: "Ce paquet a été remplacé, mais il est toujours géré pour les bugs et les correctifs de sécurité.Package a été déplacé sur le canal pear.horde.org, paquet Horde_Text_Diff."

Questions connexes