PHP: Wie Variablen vergleichen?

phikus

phikus

Aktives Mitglied
Thread Starter
Dabei seit
10.12.2004
Beiträge
180
Reaktionspunkte
0
Hallo,

folgendes Problem:

Ich habe zwei Variablen, sagen wir
$v1='abcefddg';
$v2='abcdefddg';

Jetzt möchte ich die beide vergleichen und mir die Differenz ausgeben lassen, in diesem Falle sollte also d rauskommen.
Wie kann ich das mit PHP realisieren? Habe leider nichts sinnvolles dazu gefunden über Google.
 
also du willst dass alle elemete aus der ersten variable , der 2ten variable entzogen werden ?
 
Ja, oder anders gesprochen: Ich möchte wissen was in der zweiten Variable neues dazu gekommen ist, was in der ersten noch nicht war.
 
Du kannst Strings als Array von Zeichen auffassen!

$v1="abcdefg";
$v2="aghdij";

if ($v1[0]==$v2[0])
echo "Beide Texte fangen gleich an"


brauchst nur noch über eine Schleife iterieren!
 
wie wäre es mit strcmp?
oder andere str sachen ;)
 
wegus schrieb:
$v1="abcdefg";
$v2="aghdij";

if ($v1[0]==$v2[0])
echo "Beide Texte fangen gleich an"
brauchst nur noch über eine Schleife iterieren!
Das Problem ist, wenn ich das auf meine Strings oben anwende:
$v1='abcefddg';
$v2='abcdefddg';

1. Stelle gleich, 2 gleich, 3 gleich, 4 ungleich, 5 ungleich usw..
Das hilft also leider nicht, da nicht vorhersehbar ist, an welcher Stelle im String sich etwas ändert. Deine Methode würde mehrere Änderungen anzeigen, obwohl sich nur eine Stelle geändert hat.
 
phikus schrieb:
Das Problem ist, wenn ich das auf meine Strings oben anwende:
$v1='abcefddg';
$v2='abcdefddg';

1. Stelle gleich, 2 gleich, 3 gleich, 4 ungleich, 5 ungleich usw..
Das hilft also leider nicht, da nicht vorhersehbar ist, an welcher Stelle im String sich etwas ändert. Deine Methode würde mehrere Änderungen anzeigen, obwohl sich nur eine Stelle geändert hat.


nun gut, ich wollte nicht die ganze Arbeit machen ;)
denk das Ding mal weiter!
 
oneOeight schrieb:
wie wäre es mit strcmp?
oder andere str sachen ;)
Die Str-Sachen hab ich mir angesehen, aber keine gefunden die auf mein Problem passen. Ich will ja nicht wissen ob sich ein String geändert hat oder wieviel sich geändert hat, sondern konkret was neu hinzugekommen ist. Habe jetzt schon überlegt das mit exec und diff zu lösen, aber was PHP-mäßiges wäre mir lieber.

PS: Erstmal danke für die Antworten an euch! :)
 
für was brauchst du so eine funktion ?! also um welche Datensätze geht es überhaupt ? vl gibts eine andere möglichkeit ....

ich glaube nicht das so eine aufgabe ohne viel if und elsif schleifen gelöst werden kann
 
wegus schrieb:
nun gut, ich wollte nicht die ganze Arbeit machen ;)
denk das Ding mal weiter!
Das werde ich wohl dann notfalls auch tun müssen. :p
Aber das Problem ist ja eigentlich kein neues, das sollte doch schonmal jemand gelöst haben. Und bevor ich das Rad neu erfinde. ;)
 
phikus schrieb:
Das werde ich wohl dann notfalls auch tun müssen. :p
Aber das Problem ist ja eigentlich kein neues, das sollte doch schonmal jemand gelöst haben. Und bevor ich das Rad neu erfinde. ;)


willst Du programmieren lernen oder willst Du programmieren lassen lernen ?
 
PowerBookGrafik schrieb:
für was brauchst du so eine funktion ?! also um welche Datensätze geht es überhaupt ? vl gibts eine andere möglichkeit ....

ich glaube nicht das so eine aufgabe ohne viel if und elsif schleifen gelöst werden kann
Es sind bloß zwei Strings mit einigen Zeichen Inhalt. Genaugenommen sind es zwei Variablen die Text enthalten, nämlich Fächer. z. B. "Methodische GrundlagenAllgemeine VWLInvestition und Finanzierung" und der andere "Methodische GrundlagenÖffentliche FinanzenAllgemeine VWLInvestition und Finanzierung"

Wenn ich die jetzt vergleiche, dann sollte die entsprechende Funktion "Öffentliche Finanzen" ausspucken.
 
wegus schrieb:
willst Du programmieren lernen oder willst Du programmieren lassen lernen ?
Weder das eine, noch das andere.
 
phikus schrieb:
Es sind bloß zwei Strings mit einigen Zeichen Inhalt. Genaugenommen sind es zwei Variablen die Text enthalten, nämlich Fächer. z. B. "Methodische GrundlagenAllgemeine VWLInvestition und Finanzierung" und der andere "Methodische GrundlagenÖffentliche FinanzenAllgemeine VWLInvestition und Finanzierung"

Wenn ich die jetzt vergleiche, dann sollte die entsprechende Funktion "Öffentliche Finanzen" ausspucken.


umschreib doch mal mit einfachen Worten wie Du Deine Buchstabenstrings vergleichst und denk dabei mal an mein Beispiel! Wann geht es in welchem String weiter voran, wann wird ein Buchstabe ausgegeben? Das ganze ist echt einfach, Du mußt Dir nur mal die Mühe machen es exakt zu formulieren!
 
z.B

$1= "abcde";
$2= "abde";

$1[0]==$2[0]
$1[1]==$2[1]
$1[2]!=$2[2]
wenn aber nun $1[2]==$2[3] wieder gleich ist
weißt du das $2[2] eingesetzt worden ist
 
Danke für die Hinweise erstmal, werde da nachher mal drüber nachdenken und euch wissen lassen was draus geworden ist.
 
PowerBookGrafik schrieb:
z.B

$1= "abcde";
$2= "abde";

$1[0]==$2[0]
$1[1]==$2[1]
$1[2]!=$2[2]
wenn aber nun $1[2]==$2[3] wieder gleich ist
weißt du das $2[2] eingesetzt worden ist
genau, dann verwaltest du einafch noch zwei Variablen, von denen die 2. immer dann erhöht wird, wenn eine solche änderung gefunden wurde. Un dam Ende ist die Differenz aus beiden die Zahl hinzugefügter zeichen. Wenn auch Zeichen wegenommen werden können sollen, musst du einfach bei der ersten was abziehen. Dann kannst du sogar sagen wieviele zeichen weggenommen und wieviele dazugekommen sind:
$weg = $laenge-$counter1;
$dazu = $counter2 - $counter2 + $weg;

Ich hoffe, ich hab da jetzt keinen Fehler eingebaut.;)

edit: wir warten dann...
 
ybasket schrieb:
genau, dann verwaltest du einafch noch zwei Variablen, von denen die 2. immer dann erhöht wird, wenn eine solche änderung gefunden wurde. Un dam Ende ist die Differenz aus beiden die Zahl hinzugefügter zeichen. Wenn auch Zeichen wegenommen werden können sollen, musst du einfach bei der ersten was abziehen.

so wie ich es verstanden habe ist es sogar noch einfacher, weil die Änderungen immer im 2ten String liegen! Nur sind wir hier ein Programmierforum und da sollte der Weg zur Lösung mehr wert sein als die schnöde Lösung. Wer nur dieLösung will ist mit nem Auftrag bei den Freelancern richtig :p
 
Wie wäre es mit

PHP:
$var1 = 'abcdef';
$var2 = 'abcdefgh';

print 'Hinzugekommen sind: '.str_replace($var1, '', $var2);

Ausgabe:
Hinzugekommen sind: gh

Geht natürlich nur, wenn an die zweite Variable auch wirklich nur etwas angehängt wird und nicht, wenn es mittendrin passiert.
 
Zurück
Oben Unten