Ankündigung

Einklappen
Keine Ankündigung bisher.

if (array_key_exists)... else ...

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • if (array_key_exists)... else ...

    Hi,

    habe jetzt mehrere Stunden versucht es zu verstehen und habe zig Versuche unternommen, es ohne Hilfe zu schaffen, aber komme einfach nicht weiter. (Bin aber schon mal sehr froh, es bis zu dieser Frage geschafft zu haben.:wink: )
    Wäre evtl. jemand so freundlich mir folgendes in PHP zu übersetzen.

    Kurz noch ein paar Fakten.
    Es geht um einen Shop, der eine "Weiche" vor dem Checkout bekommen soll, die überprüft, ob sich im Warenkorb ein Artikel befindet der eines der folgenden Attribute erfüllt.
    - Artikel-Nummer endet mit xy
    - Artikel-Name enthält z.B. diese Wörter

    Nun zum eigentlichen...
    Ich hab für die Abfrage ein Array zur Verfügung (
    $products = $cart->get_products() )

    PHP-Code:
    [u][b]print_r($products);[/b][/u][b][/b] (mit zwei Bspl.-Artikeln):
    Array ( [
    0] => Array ( [id] => 123 [name] => Test Artikel mit diese Wörter [model] => 123456-xy [image] => image.jpg [price] => 59.4828 [quantity] => [weight] => 0.00 [final_price] => 59.4828 [tax_class_id] => [attributes] => ) 
    [
    1] => Array ( [id] => 124 [name] => Test Artikel ohne die bestWorte [model] => 12345-55 [image] => bild.jpg [price] => 59.4828 [quantity] => [weight] => 0.00 [final_price] => 59.4828 [tax_class_id] => [attributes] => ) 
    Die Abfrage soll nun lauten:
    Wenn kein Artikel im Warenkorb ist, dessen Artikelnummer mit xy endet mache -> aktion1
    else -> aktion2

    oder

    wenn mind. ein Arikel im Warenkorb ist, dessen Name diese Wörter enthält -> aktion2
    ansonsten aktion1

    was beim oben gezeigten Testwarenkorb in beiden Fällen aktion2 auslösen würde.

    Wie müsste eine solche Abfrage lauten?


    Viele Grüße

    Andreas

  • #2
    PHP-Code:
    <?php
    for ($i 0$i count($products); $i++) {
      if (
    strpos($products[$i]['name'], 'diese Wörter') OR
          
    preg_match("#xy$#S"$products[$i]['model'])) {
        
    $aktion2 TRUE;
        break;
      }
    }

    if (
    $aktion2/*aktion2*/;
    else 
    /*aktion1*/;
    ?>
    /edit:
    mal wieder der übliche fehler, so muss es heißen:
    PHP-Code:
    <?php
    strpos
    ($products[$i]['name'], 'diese Wörter') !== FALSE
    ?>

    Kommentar


    • #3
      array_walk

      a) callback: check endung

      b) callback: check wörter

      in den jeweiligen callbackfunktionen aufruf entweder action1 oder action2

      http://de3.php.net/manual/de/function.array-walk.php

      Kommentar


      • #4
        Zitat von karl-150
        PHP-Code:
        <?php
        for ($i 0$i count($products); $i++) {
          if (
        strpos($products[$i]['name'], 'diese Wörter') OR
              
        preg_match("#xy$#S"$products[$i]['model'])) {
            
        $aktion2 TRUE;
            break;
          }
        }

        if (
        $aktion2/*aktion2*/;
        else 
        /*aktion1*/;
        ?>
        Vielen herzlichen Dank!
        Das übertrifft sogar noch mein Wunschdenken
        Um zu verstehen, was da steht hätte ich nur noch eine Frage,
        welche Bedeutung hat #..$#S (preg_match("#xy$#S", $products[quote=J33d3X]len Dank!


        Zitat von J33d3X
        array_walk

        a) callback: check endung

        b) callback: check wörter

        in den jeweiligen callbackfunktionen aufruf entweder action1 oder action2

        http://de3.php.net/manual/de/function.array-walk.php
        hey J33d3x,
        auch Dir vielen Dank.


        Viele Grüße

        Andreas

        Kommentar


        • #5
          # delimiter
          $ (zeilenende)
          s akzeptiert Zeilenumbruch als Zeichen

          Kommentar


          • #6
            s wäre hier ziemlich überflüssig (es gibt kein nl), deshalb
            S untersucht Struktur des Musters, um beim nächsten Aufruf schneller zu laufen

            Kommentar


            • #7
              Vielen, vielen Dank euch beiden!
              Ihr habt mir sehr geholfen.

              Viele Grüße

              Andreas

              Kommentar

              Lädt...
              X