SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



CronJob-Service    
bei SELFPHP mit ...



 + minütlichen Aufrufen
 + eigenem Crontab Eintrag
 + unbegrenzten CronJobs
 + Statistiken
 + Beispielaufrufen
 + Control-Bereich

Führen Sie mit den CronJobs von SELFPHP zeitgesteuert Programme auf Ihrem Server aus. Weitere Infos



:: Buchempfehlung ::

PHP 5.3 & MySQL 5.1

PHP 5.3 & MySQL 5.1 zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > SELFPHP > PHP Grundlagen
Hilfe Community Kalender Heutige Beiträge Suchen

PHP Grundlagen Hier kann über grundlegende Probleme oder Anfängerschwierigkeiten diskutiert werden

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 13.04.2016, 13:22:33
yugox yugox ist offline
Anfänger
 
Registriert seit: Apr 2016
Alter: 35
Beiträge: 16
sieht nicht leeren Array als leer an

Hallo,

folgendes Problem:


kompletter Code:
Code:
protected $uebergebender_string = array();
	protected $evtl_string = array();
	protected $verbleibende_strings;
	protected $dbArray = array();

	
	const DIFF_TRUE = 1;
	const DIFF_FALSE = 0;

	
	public function __construct() {
		//self::LoopCheckSimilarities();
	}
	
	
	protected function checkSimilarities($differentArrays, $dbArrays) {
		
		sort($differentArrays);
		sort($dbArrays);

		
		foreach($differentArrays as $diffKey) {
			$diffArray[] = $diffKey;
		}
		
		
		$input = $diffArray[0];
		
		// noch keine kürzeste Distanz gefunden
		$shortest = -1;
		
		// durch die Wortliste gehen, um das ähnlichste Wort zu finden
		foreach ($dbArrays as $word) {
		
			// berechne die Distanz zwischen Inputwort und aktuellem Wort
			$lev = levenshtein($input, $word);
		
			// auf einen exakten Treffer prüfen
			if ($lev == 0) {
		
				// das nächste Wort ist das Wort selbst (exakter Treffer)
				$closest = $word;
				$shortest = 0;

				// Schleife beenden, da wir einen exakten Treffer gefunden haben
				break;
			}
			
			// Wenn die Distanz kleiner ist als die nächste gefundene kleinste Distanz
			// ODER wenn ein nächstkleineres Wort noch nicht gefunden wurde
			if ($lev <= $shortest || $shortest < 0) {
				// setze den nächstliegenden Treffer und die kürzestes Distanz
				$closest  = $word;
				$shortest = $lev;
			}
		}
		
		unset($differentArrays[array_search($input, $differentArrays)]);
			
		// Und um den Index wiederherzustellen
		$newdifferentArrays = array_values($differentArrays);
		

		  $this->uebergebender_string[] = $input;
		  $this->evtl_string[] = $closest;
		  $this->verbleibende_strings = $newdifferentArrays;
		  $this->dbArray[] = $dbArrays;

		  $newdifferentArrays2 = count($newdifferentArrays);
		  
		 
		  echo "<br/>";
		if($newdifferentArrays >= 1) {
			return functions::DIFF_FALSE;	
		} else {
			echo "<br/>";
			print_r($this->verbleibende_strings);	
			return functions::DIFF_TRUE;
		}
}
	


	protected function LoopCheckSimilarities() {

		$checkState = $this->checkSimilarities();
		
		echo $checkState;
		exit;
		
		if($checkState == DIFF_FALSE) {
		
			print_r($this->verbleibende_strings);
			exit;	
			
			foreach($this->verbleibende_strings as $diffKey) {
				$diffArray[] = $diffKey;
			}

			foreach ($this->dbArray as $dbArray) {
			
		$lev = levenshtein($this->verbleibende_strings, $dbArray);
		
		// auf einen exakten Treffer prüfen
		if ($lev == 0) {
		
			// das nächste Wort ist das Wort selbst (exakter Treffer)
			$closest = $dbArray;
			$shortest = 0;
		
			 
			unset($this->verbleibende_strings[array_search($diffArray, $this->verbleibende_strings)]);
		
			// Und um den Index wiederherzustellen
			$newdifferentArrays = array_values($this->verbleibende_strings);
		
			// Schleife beenden, da wir einen exakten Treffer gefunden haben
			break;
		}
		
		// Wenn die Distanz kleiner ist als die nächste gefundene kleinste Distanz
		// ODER wenn ein nächstkleineres Wort noch nicht gefunden wurde
		if ($lev <= $shortest || $shortest < 0) {
			// setze den nächstliegenden Treffer und die kürzestes Distanz
			$closest = $dbArray;
			$shortest = $lev;
		}

		array_push($this->uebergebender_string, $diffArray[0]);
		array_push($this->evtl_string, $closest);
		
		$this->verbleibende_strings = $newdifferentArrays;
		
		if(isset($newdifferentArrays)) {
			return $this->verbleibende_strings;
		} else {
			return DIFF_TRUE;
		}
		}
	}
	
	}
	
}
Ausgabe:

1

Sollte sein:

0


Wieso wird mir "else" ausgegeben obwohl das Array nicht leer ist, was übersehe ich?

Update: Hab das nun gelöst, aber folgendes funktioniert nicht.


$checkState müsste 0 ausgeben, weil DIFF_FALSE = 0; aber es ist auf 1... woher kann das kommen?

Danke für die Hilfe.

Geändert von yugox (13.04.2016 um 13:43:07 Uhr)
Mit Zitat antworten
  #2  
Alt 13.04.2016, 14:14:05
yugox yugox ist offline
Anfänger
 
Registriert seit: Apr 2016
Alter: 35
Beiträge: 16
AW: sieht nicht leeren Array als leer an

UPDATEUPDATEUPDATEUPDATE

Hab es nun doch alles selber gelöst.
Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
vergleichen und bei Bedarf Array erweitern Tikiwiki PHP Grundlagen 4 12.11.2012 13:08:07
Arrayblind tlang78 PHP Grundlagen 2 30.06.2009 15:08:33
Array formatiert ausgeben Faang PHP Grundlagen 3 15.08.2008 01:47:43
Doppelte einträge aus einem Mehrdimensionalen Array aussortieren und löschen PHoenix_KM PHP für Fortgeschrittene und Experten 2 17.04.2008 18:19:53
Einzelne Daten aus Textdatei Auslesen azubinator PHP Grundlagen 153 17.12.2004 13:36:58


Alle Zeitangaben in WEZ +2. Es ist jetzt 07:35:32 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.


© 2001-2024 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt