• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Zeichenfolge aufteilen

kRuzeFiX

Neues Mitglied
Hallo html-Team,

ich habe ein kleines Problem, und zwar habe ich eine Zeichenfolge von verschiedenen Zahlen hintereinander gespeichert in einem Array, diese Folge kann nur aus einer Zahl besten (z.B. "2") jedoch auch beliebig länger sein (z.B. "2, 3, 4, 50, 51, 52, 103, 104, 105") getrennt werden diese immer mit ", " also Komma und Leerzeichen.
Nun versuche ich hierbei diese Zahlen per Skript automatisch aufzuteilen, sodass ich bei oberer Zahlenfolge zum Beispiel am Ende die Ausgabe wiefolgt habe:
PHP:
$array= "2, 3, 4, 50, 51, 52, 103, 104, 105";

$variable1 = "2";
$variable2 = "3";
$variable3 = "4";
$variable4 = "50";
$variable5 = "51";
$variable6 = "52";
$variable7 = "103";
$variable8 = "104";
$variable9 = "105";

alleine kam ich mittlerweile so weit, dass ich mittels "strpos" rausfinde ob nur eine Zahl im Array gespeichert ist, und wenn ja diese dann ausgebe:

PHP:
if(strpos($array, ",") == false) {    
        echo $array;
} else {
...
}

Hoffe ihr versteht was ich meine und könnt mir weiterhelfen,
Danke.

Gruß,
kRuzeFiX
 
Vielleicht erklärst du mal, warum du das brauchst. In der Regel ist soetwas nämlich Quatsch und lässt sich anders lösen.

Außerdem hast du da kein Array, sondern einen String.
 
Ich hab ein Eingabeformular wo für ein Element ein Name vergeben werden kann und ein und/oder mehrere Attribute. Wenn die Attribute ausgewählt wurden, werden die ID's aus der entsprechenden Datenbank gelesen und nacheinander mit ", " voneinander getrennt gespeichert. Wenn ich das Element nun wieder anzeigen möchte, sollten die Attribute entsprechend der ID's ausgelesen und angezeigt werden.
 
Als Array wäre es auch gegangen, aber ich habe damit noch weiteres vor - deshalb ist es über die ID - Nummer geschickter, darum: DANKE an Asterixus. Für die, die es interessiert bzw. einmal das gleiche Problem haben, habe es folgendermaßen gelöst:

PHP:
else {
    
    $software_e = explode(", ",$software);
    $zahl = 0;
    
        while ($software_e[$zahl] != null) {
                
            $abfrage = "SELECT * FROM datenbankname WHERE id = '".$software_e[$zahl]."'";
            $ergebnis = mysql_query($abfrage) or die(mysql_error());
            $daten = mysql_fetch_assoc($ergebnis);
            $ausgabe = $daten['software'];            
            
            echo $ausgabe."<br />";
            
            $zahl=$zahl+1;
        }
 
Das ist ziemlich unsauber und in deinem Fall wäre die aktuelle Kommastruktur dafür sogar super:

PHP:
$sql = 'select software from datenbankname where id in ('.$software.')';
$statement = $pdo->query($sql);
while ($row = $statement->fetch(PDO::FETCH_ASSOC)) {
    echo $row['software'],'<br />';
}

Einige Sachen zu deinem Code: Du benutzt die MySQL-Extension, die ab PHP5.5 veraltet ist und in PHP5.6 oder PHP6 gar nicht mehr existieren wird. Stattdessen solltest du PDO oder mysqli verwenden.
Deine Methode, um über ein Array zu iterieren (schleifen) ist ziemlich exotisch und verursacht Fehlermeldungen bei error_reporting(-1);
PHP:
foreach ($software_e as $key => $id) {
    //..
}
Das ist sauberer, schneller und korrekt.

Bei select-Abfragen sollte man niemals * abfragen.
 
Zurück
Oben