Anzeige

Daten in Array splitten und prüfen


#1
Hallo Zusammen

Ich habe ein folgendes Array welches mir ausgegeben wird:
Code:
Array ( [0] => fricktalinfo:1234 [1] => mobus:5678 [2] => benutzer:9101112 [3] => benutzer2:13141516 )
Nun ist es so, dass ich diesen nochmals splitten möchte, zum prüfen, ob der Benutzer (vor dem Doppelpunkt) bereits vorhanden ist.

Ich habe es wie folgt versucht:
PHP:
$benutzer ="mobus";
foreach ($aufsplitt as $result){
list($benutzerkon,$nummer) = explode(":",$result);
echo $benutzerkon."<br>";
if (in_array($benutzer,$benutzerkon)){
$nachricht = "bereits vorhanden<br>";
}
else {
$nachricht = "erfolgreich hinzugefügt<br>";
}
echo $nachricht;
Das Problem, dabei ist, dass die Prüfung nicht erfolgt. er gibt jeweils "erfolgreich hinzugefügt" aus.

Gibt es da eine einfachere lösung oder bin ich ganz auf dem Holzweg, dann wäre ich froh, wenn ich den einen oder anderen Hinweis erhalten würde.

Besten Dank und einen schönen Abend
bambid
 

Sempervivum

Erfahrenes Mitglied
#2
Das Problem bei deinem Code ist, dass $benutzekon immer nur der aktuelle Benutzer ist und nicht ein Array aller Benutzer.
Dies sollte tun, was Du erwartest:
PHP:
$arr = ['fricktalinfo:1234', 'mobus:5678', 'benutzer:9101112', 'benutzer2:1314151'];
$benutzer = "mobus";
$nachricht = "erfolgreich hinzugefügt<br>";
foreach ($arr as $item) {
    if (explode(':', $item)[0] == $benutzer) {
        $nachricht = "bereits vorhanden<br>";
        break;
    }
}
echo $nachricht;
 
#3
Danke dir für den Ansatz, um das was ich benötigte, zu erreichen, musste ich das was ich bereits extrahiert hatte wieder in ein Array schalten, dass ich dann die Prüfung des Inhalts machen konnte. dies habe ich mit
PHP:
$ueberg[$key] = $benutzerkon;
erreicht.
so sieht das gesammte Script nun aus:
PHP:
$benutzer1="mobus"; //Dies ist eine Variable die über ein Textfeld geändert und geprüft wird.
$arr = ['fricktalinfo:1234', 'mobus:5678', 'benutzer:9101112', 'benutzer2:1314151']; //dies wird aus einer Datei geladen (text.txt)
foreach ($arr as $key => $item) {
    list($benutzerkon,$nummer) = explode(":",$item);
        $ueberg[$key]= $benutzerkon;   
    }       
$benutzer1 = $ueberg;         
 if(in_array($benutzer,$benutzer1)){
 echo "Benutzer bereits vorhanden";
 }
 else {
 $datei = fopen("text.txt,"a+");
        fwrite($datei,"\n".$zusammen);
        fclose($datei);
        echo "erfolgreich Hinzugegefügt";
       
 }
Danke für den Hinweis, so konnte ich es lösen. Oder gibt es dafür noch eine einfachere Variante? ohne den Umweg über das Array? denn wenn ich dies so mache wie du es geschrieben hast, schrib er mir entweder mehrere Zeilen in das text.txt oder er hat gesagt es sei vorhanden und dann weiter gemacht.

Gruss bambid
 

Sempervivum

Erfahrenes Mitglied
#4
Oder gibt es dafür noch eine einfachere Variante? ohne den Umweg über das Array?
Möglicher Weise ja, aber ich kann die Frage nicht beantworten, weil ich nicht weiß, was $zusammen ist.
Den Web mit dem Hilfsarray hatte ich auch zuerst in Betracht gezogen, war aber dann davon abgekommen, weil man dabei immer über das ganze Array iterieren muss, während man bei einer einfachen Suche abbricht, sobald man den Benutzer gefunden hat.
 
#5
Achso, sorry, das
PHP:
$zusammen=$benutzer.“:“.$nummer;
dies ist von der eingabemaske wubei der Benutzer geprüft werden muss und wenn dieser noch nicht vorhanden ist, dann soll das $zusammen in das txt geschrieben werden.

Lg bambid
 

Sempervivum

Erfahrenes Mitglied
#6
Verstehe, so in etwa hatte ich es mir schon gedacht. Dann probiere mal, ob dies zum Ziel führt:
PHP:
$benutzer = "mobus";
$nachricht = "erfolgreich hinzugefügt<br>";
$vorhanden = FALSE;
foreach ($arr as $item) {
    if (explode(':', $item)[0] == $benutzer) {
        $vorhanden = TRUE;
        break;
    }
}
if (!$vorhanden) {
    $datei = fopen("text.txt,"a+");
    fwrite($datei,"\n".$zusammen);
    fclose($datei);
    echo "erfolgreich Hinzugegefügt";
} else {
    echo "Benutzer bereits vorhanden";
}
 
Anzeige
Anzeige