• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

PHP Array mit Suchbegriffempfehlungen aus json Datei erweitern

ags

New member
Folgende Routine soll zwecks search suggestions die partiell passenden populären Eingaben vorne an ein array dran bauen und wenn aber der eintrag im array schon existiert, dann soll er ihn nach vorne verschieben. Es geht natürlich nicht:

Code anzeigen

PHP:
if (file_exists("popularquerys.txt")) {
	$popular = json_decode(file_get_contents("popularquerys.txt"), true);
	if (!isset($matches)) $matches = array();
	foreach ($popular as $item => $count) {
		if (ereg("^$input", $item) && $input != $item) {
			$i = array_search($item,$matches);
			if ($i != false) {
   				unset($matches[$i]);
				$matches = array_values($matches);
			}
			$temp = array($item);
			$matches = $temp + $matches;
		}
	}
}


Es wird nur der letzte Eintrag aus dem json Datenfile berücksichtigt. Der erste, obwohl mit den selben Zeichen "sephi" beginnend, wird nicht in die matches auf genommen:

{"sephirah":3,"sephiroth":2,"andreas":1,"testament":1}

Wer weiß die Lösung?
 
Zuletzt bearbeitet:
Sicher habe ich in die Anleitung reingeschaut. Bin sozusagen ständig dabei. Danke. ps: ich mache sehr viel auf einmal, scheibe u.anderem jQuery Plugins. Da kann es schonmal vor kommen, dass ich so einiges übersehen... Außerdem sammele ich mir mein Knowhow typsicherwiese aus Schnipseln aus dem Web zsuammen, da kann es schonmal vor kommen, dass etwas nicht stimmt.

Jetzt habe ich es so, geht nicht:

PHP:
if (file_exists("popularquerys.txt")) {
	$popular = json_decode(file_get_contents("popularquerys.txt"), true);
	foreach ($popular as $item => $count) {
		if (preg_match($pattern, $item) && $input != $item) {
			$i = array_search($item,$matches);
			if ($i !== false) array_splice($matches,$i,1);
			$temp = array($item);
			array_push($temp, $matches);
			$matches = $temp;
		}
	}
}
 
Zuletzt bearbeitet:
Wo ist $pattern definiert?
array_push verwendest du falsch und $temp ist überflüssig. Ich hab' aber auch was in deinem ersten Beitrag übersehen -> PHP: array_unshift - Manual

Außerdem verwendest du auch foreach falsch: PHP: foreach - Manual

Vielleicht solltest du nicht so viele Dinge auf einmal machen und dich mehr auf eine Sache konzentrieren...

PS: Bei Code-Fetzen aus dem Netz sollte man sehr kritisch sein und lieber nochmal in der Dokumentation nachlesen.
PPS: Ich bin mir nicht sicher, wen du hier mit jQuery-Plugins beeindrucken willst - bei mir bist du da an der komplett falschen Adresse: ich mag jQuery nicht.
 
Das mache ich beim foreach falsch? Ich mache es doch immer so und sonst funktioniert es. Danke für die Tips.
 
$key ist der name des feldes und value der wert. Da klappt bei mir immer 100%ig und Du hast vielleicht meine Variablen falsch verstanden? Das Array ist $popular, der Feldname ist $item und der inhalt des Feldes ist $count.
 
Nein - passt schon... ich hatte dein JSON falsch im Kopf (manchmal sollte man einfach nochmal nachsehen...).
 
Zurück
Oben