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 ::

Fortgeschrittene CSS-Techniken

Fortgeschrittene CSS-Techniken 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
  #11  
Alt 11.04.2016, 12:46:45
yugox yugox ist offline
Anfänger
 
Registriert seit: Apr 2016
Alter: 35
Beiträge: 16
AW: Array-Vergleich und richtige ausgabe

Irgendwie verstehe ich das nicht ganz so mit den array_diff. Es funktioniert nicht so ganz bei mir...

Hinweis: CSV-Datei, Inhalt besteht nur aus und sieht so aus:
Vorname,Nachname
Rita,MusterNachname

Hier mal der komplette Code.


Code:
<?php

class importer {

    protected $file;
    protected $importData_value = array();
    protected $importData_values = array();
    protected $csvstring = array();
    protected $systemstring = array();

    private static function checkCsvFile($file) {
        if(!file_exists($file) && !is_readable($file)) {
            throw new Exception($file . "<br/>" ." Es wurde keine Datei gefunden oder die Datei ist nicht lesbar.");
        }
        return $file;
    }


    public function insertCsvFile() {
        try {
            $CSVfiles = PFAD;

            $file = self::checkCsvFile($CSVfiles);

            $this->file = $file;

            self::csvFileInformation();

        } catch(Exception $e) {
            echo "Fehler: " ,  $e->getMessage();
        }
    }
  
    private function systemStrings() {
        $zeichenkette = [
            'Vorname' => 'Vorname',
            'Nachname' => 'Nachname',
        	'Name' => 'Nachname',
            'Strasse' => 'Strasse',
            'PLZ' => 'PLZ',
            'Ort' => 'Ort',
            'Personal_Nr' => 'Personalnummer',
            'Anrede' => 'Anrede',
            'Titel' => 'Titel',
            'Telefon' => 'Telefon',
            'Fax' => 'Fax',
            'Email' => 'Email',
            'rexxMail' => 'rexxMail',
            'Abteilung' =>  'Abteilung',
            'Betriebsrat' => 'nein',
            'Status' => 'Benutzerprofil',
            'SB_Vertretung' => 'nein',
            'Position' => 'Position',
            'Username' => 'Username',
            'Benutzername' => 'Username',
            'Passwort' => 'Passwort',
            'rexx-Passwort' => 'rexx-Passwort',
            'aktiv' => 'ja',
            'Datumsformat' => 'Datumsformat',
            'MeineStartseite' => 'Meine Startseite',
            'Sprache' => 'Sprache'
    ];   
        return $zeichenkette;
    }
    
    
    private function checkDifferents($csv, $system) {

    	$i = 0;
    	
    	while ($i == 0) {
    		
    	
    	foreach($csv as $csvkey) {
    		$erg_csv[] = $csvkey;
    		$this->csvstring = $erg_csv;
    	}
    	
    	foreach($system as $systemkey => $value) {
    		$erg_system[] = $systemkey;	
    		$this->systemstring = $erg_system;
    		 
    	}
    	
    	$test1 = ['Nachname', 'Vorname', 'Strasse'];
    	$test2 = ['Nachname', 'Vorname', 'Straße'];


Wenn ich beim $ergebnis "$this->csvstring, $this->systemstring" durch $test1 und
$test2 ersetze, dann funktioniert das... ich verstehe aber nicht wieso es nicht mit den anderen beiden Arrays klappt. Wenn ich mir die Arrays alle einzelnd ausgebe, sehen sie alle vom Aufbau gleich aus!


$ergebnis = array_diff($this->csvstring, $this->systemstring);
    	    	

    	return $ergebnis;
    }

    }

 private function csvFileInformation() {

            self::readCsvHeadling();
            echo "<pre>";
            print_r($this->importData_values);
            echo "------";
            echo "<br/>";
            print_r(self::systemStrings());
            echo "</pre>";
            echo "<br/>";
            echo "<b><pre>";
            print_r(self::checkDifferents($this->importData_values, self::systemStrings()));
            echo "</b></pre>";
            echo "<br/>";
            echo "<pre>";
            print_r($this->systemstring);
            echo "</pre>";
            echo "<br/>";
            echo "<pre>";
            print_r($this->csvstring);
            echo "</pre>";
            exit;
 
    }
    
   	private function readCsvHeadling() {

        $csvfile = fopen($this->file, 'r');
        $csv_data = fgets($csvfile, 10240);
        $this->importData_value = explode(",", $csv_data);

        $i = 0;

        while ($i == 0) {
            $value_array = array();

                $value_array[] = $this->importData_value;

                foreach($value_array as $csvArray) {
                    return $this->importData_values = $csvArray;
                }
        }
        fclose($csvfile);
    }

    
}

$Start = new importer();
$Start->insertCsvFile();
Mit Zitat antworten
  #12  
Alt 11.04.2016, 13:33:43
chorn chorn ist offline
Junior Member
 
Registriert seit: Apr 2016
Alter: 44
Beiträge: 171
AW: Array-Vergleich und richtige ausgabe

"dann funktioniert das" was soll das wieder heissen? array_diff gibt dir die Unterschiede zurück, und das sollten bei der Eingabe von ['Vorname', 'Nachname'] ne ganze Menge sein.
Und wenn du die nicht übersetzt, dann brauchen die da auch nicht doppelt drinstehen.
Mit Zitat antworten
  #13  
Alt 11.04.2016, 13:45:13
yugox yugox ist offline
Anfänger
 
Registriert seit: Apr 2016
Alter: 35
Beiträge: 16
AW: Array-Vergleich und richtige ausgabe

Das heißt...

Ausführung1: (DIE AUSFÜHRUNG DIE ICH BENÖTIGE)
Code:
    private function checkDifferents($csv, $system) {

    	$i = 0;
    	
    	while ($i == 0) {
    		
    	
    	foreach($csv as $csvkey) {
    		$erg_csv[] = $csvkey;
    		$this->csvstring = $erg_csv;
    	}
    	
    	foreach($system as $systemkey => $value) {
    		$erg_system[] = $systemkey;	
    		$this->systemstring = $erg_system;
    		 
    	}
    	
    	$test1 = ['Nachname', 'Vorname', 'Strasse'];
    	$test2 = ['Nachname', 'Vorname', 'Straße'];

$ergebnis = array_diff($this->csvstring, $this->systemstring);
    	    	

    	return $ergebnis;
    }

    }
Ausgabe:


Array
(
[1] => Nachname

)



Ausführung2: (NUR EINE AUSFÜHRUNG UM DAS ARRAY_DIFF ZU TESTEN)
Code:
    private function checkDifferents($csv, $system) {

    	$i = 0;
    	
    	while ($i == 0) {
    		
    	
    	foreach($csv as $csvkey) {
    		$erg_csv[] = $csvkey;
    		$this->csvstring = $erg_csv;
    	}
    	
    	foreach($system as $systemkey => $value) {
    		$erg_system[] = $systemkey;	
    		$this->systemstring = $erg_system;
    		 
    	}
    	
    	$test1 = ['Nachname', 'Vorname', 'Strasse'];
    	$test2 = ['Nachname', 'Vorname', 'Straße'];

$ergebnis = array_diff($test1, $test2);
    	    	

    	return $ergebnis;
    }

    }
Ausgabe:

Array
(
[2] => Strasse
)


Wie man sieht, wird bei der Ausführung2 (TEST-AUSFÜHRUNG) die Ausgabe, bzw. das was Array_diff liefert richtig ausgegeben.

und bei der Ausführung1 (Die eigentlich benötigt wird) die Ausgabe, bzw. das was Array_diff lieferen soll, nicht korrekt geliefert, weil der Nachname ja vorhanden ist. Normalerweise sollte er mir bei der Ausführung1 ein leeres Array liefern und das ich das was ich nicht verstehe.
Mit Zitat antworten
  #14  
Alt 11.04.2016, 15:18:20
chorn chorn ist offline
Junior Member
 
Registriert seit: Apr 2016
Alter: 44
Beiträge: 171
AW: Array-Vergleich und richtige ausgabe

dann guck halt mal was da drin steht, ab da sollte doch ein einfaches print_r Klarheit bringen.

Code:
print_r($this->csvstring); // wieso "string" wenn's ein Array ist?
print_r($this->systemstring);
print_r($test1);
print_r($test2);
Mit Zitat antworten
  #15  
Alt 11.04.2016, 16:13:29
yugox yugox ist offline
Anfänger
 
Registriert seit: Apr 2016
Alter: 35
Beiträge: 16
AW: Array-Vergleich und richtige ausgabe

Zitat:
dann guck halt mal was da drin steht, ab da sollte doch ein einfaches print_r Klarheit bringen.
Bringt mir keine Klarheit... :-(

Zitat:
print_r($this->systemstring);
Array
(
[0] => Vorname
[1] => Nachname
[2] => Name
[3] => Strasse
[4] => PLZ
[5] => Ort
[6] => Personal_Nr
[7] => Anrede
[8] => Titel
[9] => Telefon
[10] => Fax
[11] => Email
[12] => rexxMail
[13] => Abteilung
[14] => Betriebsrat
[15] => Status
[16] => SB_Vertretung
[17] => Position
[18] => Username
[19] => Benutzername
[20] => Passwort
[21] => rexx-Passwort
[22] => aktiv
[23] => Datumsformat
[24] => MeineStartseite
[25] => Sprache
)

Zitat:
print_r($this->csvstring); // wieso "string" wenn's ein Array ist?
das ist nur der Name! Natürlich ist es ein Array, ich gebe aber zu das der Name dumm gewählt ist.

Array
(
[0] => Vorname
[1] => Nachname

)

Zitat:
print_r($test1);
Array
(
[0] => Nachname
[1] => Vorname
[2] => Strasse
)

Zitat:
print_r($test2);
Array
(
[0] => Nachname
[1] => Vorname
[2] => Straße
)


Hoffentlich bringt dir das Klarheit, weil für mich alle Arrays vom Aufbau gleich aussehen.

und $test1 und $test2 macht er den array_diff korrekt und
bei $csvstring und $systemstring eben nicht, da findet er wie oben beschrieben und gezeigt, den Nachnamen nicht.
Mit Zitat antworten
  #16  
Alt 12.04.2016, 09:54:28
chorn chorn ist offline
Junior Member
 
Registriert seit: Apr 2016
Alter: 44
Beiträge: 171
AW: Array-Vergleich und richtige ausgabe

Dann hast du da irgendwo andere Daten drin, oder ein anderes Format, oder interpretierst die Rückgabewerte falsch, array_diff funktioniert: https://3v4l.org/e2GPW
Lass dir die Arrays mit var_export ausgeben, dann kannst du dir auch ein lauffähiges, reproduzierbare Bspl in der Sandbox erzeugen
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 16:05:33 Uhr.


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


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