Neuigkeiten
  • Die modified eCommerce Shopsoftware ist kostenlos, aber nicht umsonst.
    Spenden
  • Damit wir die modified eCommerce Shopsoftware auch zukünftig kostenlos anbieten können:
    Spenden
  • Thema: Alle Werte eines Strings erfassen mit strpos()?

    awids

    • Experte
    • Beiträge: 3.803
    • Geschlecht:
    Alle Werte eines Strings erfassen mit strpos()?
    am: 28. November 2017, 01:53:39
    Guten Morgen,

    ich bastle gerade ein wenig rum und habe da so ein kleines Problem bei den Rückgabewerten eines Strings.

    Folgendes Beispiel:

    Ein Datenbankfeld enthält kommaseparierte Zahlenwerte, z. B. 1,3,2 und dies soll an anderer Stelle dann bestätigt werden. Dazu hab ich es mit folgender Abfrage versucht:

    Code: PHP  [Auswählen]
    ((strpos($pInfo->products_tabelle, $tabellen_id)) ? 'x' : 'y'))

    Grundsätzlich klappt das auch, nur wird regelmäßig (immer) der 1. Wert nicht positiv zurückgegeben, obwohl er in der Tabelle vorhanden ist.

    Woran kann das liegen und welche (alternativen) Möglichkeiten habe ich?

    LG Alex

    Linkback: https://www.modified-shop.org/forum/index.php?topic=38306.0

    Hetfield

    • modified Team
    • Beiträge: 937
    Re: Alle Werte eines Strings erfassen mit strpos()?
    Antwort #1 am: 28. November 2017, 06:56:23
    String mit explode in ein Array umwandeln und dann mit in_array den Wert abfragen.
    Code: PHP  [Auswählen]
    $products_tabelle = explode(',', $pInfo->products_tabelle);
    in_array($tabellen_id, $products_tabelle) ? 'x' : 'y';

    MfG Hetfield  8)

    hpzeller

    • Experte
    • Beiträge: 4.129
    • Geschlecht:
    Re: Alle Werte eines Strings erfassen mit strpos()?
    Antwort #2 am: 28. November 2017, 08:22:15
    Hallo awids,

    folgendes Zitat und folgendes Beispiel stammen von Hier -> http://php.net/manual/de/function.strpos.php

    Zitat
    Warnung
    Diese Funktion kann sowohl das boolsche FALSE zurückliefern, als auch einen nicht-boolschen Wert, welcher zu FALSE ausgewertet wird. Weitere Informationen entnehmen Sie bitte dem Abschnitt über die boolschen Typen. Benutzen Sie deshalb den === Operator, um den Rückgabewert dieser Funktion zu überprüfen.

    Beispiel #1 Verwendung von ===

    Code: PHP  [Auswählen]
    <?php
    $meinString = 'abc';
    $findMich   = 'a';
    $pos = strpos($meinString, $findMich);

    // Beachten Sie die Verwendung von ===. Ein einfacher Vergleich (==) liefert
    // nicht das erwartete Ergebnis, da die Position von 'a' die nullte Stelle
    // (also das erste Zeichen) ist
    if ($pos === false) {
        echo "Der String '$findMich' wurde nicht im String '$meinString' gefunden";
    } else {
        echo "Der String '$findMich' wurde im String '$meinString' gefunden";
        echo " und befindet sich an Position $pos";
    }
    ?>
     

    Also wenn das Gesuchte ganz am Anfang des Strings steht, dann gibt strpos() den Wert 0 zurück, welcher dann in einer Kontrollstruktur wie du sie gepostet hast als False gewertet wird.

    Daraus folgt:
    Dein Code müsste also so aussehen

    Code: PHP  [Auswählen]
    ((strpos($pInfo->products_tabelle, $tabellen_id) !== false) ? 'x' : 'y')

    Gruss
    Hanspeter

    awids

    • Experte
    • Beiträge: 3.803
    • Geschlecht:
    Re: Alle Werte eines Strings erfassen mit strpos()?
    Antwort #3 am: 28. November 2017, 08:35:53
    Wie einfach.  :x Herzlichen Dank.  :B
     :king:
    4 Antworten
    8630 Aufrufe
    30. Dezember 2015, 11:01:40 von noRiddle (revilonetz)
    4 Antworten
    3574 Aufrufe
    19. Februar 2013, 22:39:06 von JZ_Aqua