Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
array miteinander vergleichen! [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
array miteinander vergleichen!


 
meierhans
07-11-2006, 14:12 
 
Hallo!

Habe eine Tabelle. Die Daten lege ich in ein Array. Nun soll geprüft werden, ob innerhalb dieser Tabelle bzw. Array Inhalte gleich sind und wenn ja sollen diese id's gespeichert werden.
Leider klappt es bei mir nicht. Es werden alle Id's aus.

$z = 0;
while ($daten = mysql_fetch_array($erg)){

$route_id[$z] = array($daten['id'],$daten['benutzername'],$daten['von'],
$daten['nach']) ;
$anzahl = count($route_id);


for($i=1;$i<$anzahl;$i++){

if($route_id[$z][2] == $route_id[$i][2]){
$id = $route_id[$z][0];
echo id;

}

}

$z++;

}

 
phoenixxx
07-11-2006, 14:19 
 
$anzahl = count($route_id);


for($i=1;$i<$anzahl;$i++){
Sowas geht auch einfach mit foreach.
echo id;
Fehlt da nicht was... ;)
Müsste $id nicht nach jedem Durchlauf von while gelöscht werden (unset)? Bzw empfiehlt sich nich $id[] = ..., halt Verwendung von $id als Array?

PS: Hm, gehts nicht auch mit MySQL?

 
jahlives
07-11-2006, 14:29 
 
$arr = array_unique($route_id);
$diff = array_diff_key($route_id,$arr);

Sollte ein Array zurückgeben mit den Schlüsseln die in $route_id aber nicht in $arr vorkommen. Sprich alle die wegen doppeltem Vorkommen entfernt wurden.
Hilft dir das weiter ?

Gruss

tobi

 
meierhans
07-11-2006, 15:19 
 
Ich glaube, das Problem ist meine if Bedingung, denn die Ausgabe sind alle id's, das bedeutet das der vergleich immer "true" ist, was aber nicht der Fall ist.

Seltsam ist auch meine Zählervariale $z, sie sollte bei der Überprüfung auf '0' stehen, sie ist auf '1' gesetzt.

Es mit sql zu lösen, da habe ich leider keinen Ansatz gefunden. Hier werden immer 2 Tabellen in Betracht gezogen.

Der Ansatz müßte doch korekt sein, ich habe eine feste Array Position und kann die wiederum mit einem "Zhäler-Array" vergleichen oder ist der Ansatz völlig verkehrt?!

 
jahlives
07-11-2006, 15:29 
 
Der Ansatz müßte doch korekt sein, ich habe eine feste Array Position und kann die wiederum mit einem "Zhäler-Array" vergleichen oder ist der Ansatz völlig verkehrt?!

Das glaube ich nicht Tim ;) Du machst den Vergleich ja bevor das Array überhaupt komplett aufgebaut ist (der Vergleich findet ja innerhalb der while-Schleife statt, die die MySql Ressource ausliest). Zu diesem Zeitpunkt ist das Array aber keinesfalls komplett aufgebaut.
Wenn schon würde das ausserhalb der Schleife mehr Sinn machen, denn dann ist das Array komplett mit allen Resultaten gefüllt.

Gruss

tobi

 
Hirnhamster
07-11-2006, 21:34 
 
wie kann es überhaupt sein, das eine ID doppelte vorkommt? ist sie dann nicht irgendwie zweckentfremdet?

 
closure
08-11-2006, 08:16 
 
Hi,

was spricht gegen:

SELECT * FROM tabelle1 as t1 ,tabelle2 as t2 WHERE
t1.benutzername = t2.benutzername OR
t1.von = t2.von OR
t1.nach = t2.nach OR
...

?

greets

- -

Alle Zeitangaben in WEZ +2. Es ist jetzt 20:57 Uhr.