Rebecca: Herausfinden ob ein value in einem Array ist

Hallöchen zusammen,

ich möchte herausfinden ob ein bestimmter Wert in einem Array ist. Dazu habe ich mir in der Doku die Funktion array_search() angesehen und versucht anzuwenden. irgendwie klappt es aber nicht.

Im folgenden Code wird in dem Array "$someArray" nach dem Wert "$someValue" gesucht.
Da dieser Wert nicht gefunden wird, sollte eigentlich der code aus dem if-statement ausgeführt werden, oder?

$someArray = array(0 => 'blau', 1 => 'rot', 2 => 'grün', 3 => 'rot');
$someValue = "abc";

if(array_search($someValue, $someArray) == FALSE)
{
 // dieser Wert ist noch nicht im array -> mach irgendwas
}

Vielen Dank im Voraus

Liebe Grüße
Rebecca

  1. Hallo,

    if(array_search($someValue, $someArray) === FALSE)

    {
    // dieser Wert ist noch nicht im array -> mach irgendwas
    }

    LG
    Chris

    1. Hallo Chris,

      vielen Dank. Hat funktioniert.

      Liebe Grüße
      Rebecca

  2. Hallo Rebecca.

    ich möchte herausfinden ob ein bestimmter Wert in einem Array ist.

    Wenn du *nur das* möchtest, wäre in_array() für dich interessant.

    Einen schönen Samstag noch.

    Gruß, Ashura

    --
    sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|
    mathbr:del.icio.us/ mathbr:w00t/
    1. Hallo Ashura,

      Wenn du *nur das* möchtest, wäre in_array() für dich interessant.

      Das sollte aber doch gegenüber array_search() den gleichen Aufwand bedeuten, oder?

      LG
      Chris

      1. Hallo Chris.

        Wenn du *nur das* möchtest, wäre in_array() für dich interessant.

        Das sollte aber doch gegenüber array_search() den gleichen Aufwand bedeuten, oder?

        Das ja, aber das Ergebnis (der Rückgabewert) ist unterschiedlich.

        Einen schönen Samstag noch.

        Gruß, Ashura

        --
        sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|
        mathbr:del.icio.us/ mathbr:w00t/
        1. Hallo Ashura,

          Wenn du *nur das* möchtest, wäre in_array() für dich interessant.

          Das sollte aber doch gegenüber array_search() den gleichen Aufwand bedeuten, oder?

          Das ja, aber das Ergebnis (der Rückgabewert) ist unterschiedlich.

          Nicht so sehr... :-)
          Er ist "identisch FALSE" oder "Nicht false" bei beiden für dasselbe Ergebnis.

          Mich hätte nun interessiert, ob das einen tieferen Sinn hat, dass es in_array() (noch) gibt, oder ob das einfach klassisch gewachsen ist. Könnte ja auch sein, dass PHP die Durchforstung der reinen Wertesammlung tatsächlich etwas schneller schafft, als das Herausfinden des zugehörigen Index... Allerdings bin ich bisher der Meinung, dass Index _und_ Wert ohnehin auf demselben Speicherelement stehen (dynamisch beschafft).

          ?

          LG
          Chris

          1. Hallo Chris.

            Das ja, aber das Ergebnis (der Rückgabewert) ist unterschiedlich.

            Nicht so sehr... :-)
            Er ist "identisch FALSE" oder "Nicht false" bei beiden für dasselbe Ergebnis.

            Dank automatischer Typenumwandlung, ja.

            Mich hätte nun interessiert, ob das einen tieferen Sinn hat, dass es in_array() (noch) gibt, oder ob das einfach klassisch gewachsen ist.

            Bei in_array() sind die Rückgabewerte eindeutig, es gibt nur TRUE oder FALSE. Bei array_search() bin ich mir da anhand der Beschreibung nicht so sicher.

            Könnte ja auch sein, dass PHP die Durchforstung der reinen Wertesammlung tatsächlich etwas schneller schafft, als das Herausfinden des zugehörigen Index...

            Was zu erforschen wäre …

            Einen schönen Samstag noch.

            Gruß, Ashura

            --
            sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|
            mathbr:del.icio.us/ mathbr:w00t/
            1. Hallo,

              Bei in_array() sind die Rückgabewerte eindeutig, es gibt nur TRUE oder FALSE. Bei array_search() bin ich mir da anhand der Beschreibung nicht so sicher.

              wenn innerhalb eines Steuerflußes ausschließlich wichtig ist, das ein Wert vorhanden ist, würde ich in_array() bevorzugen. Muß man nicht nur feststellen, ob der Wert vorhanden ist, sondern ihn beispielsweise abändern, so ist array_search() eindeutig besser.

              Gerade an dem Beispiel wird sehr deutlich, das PHP für so gut wie jedes Problem mit einer eigenen Funktion daher kommt. Programmierung an sich findet fast schon nicht mehr statt, was ich persönlich bedauerlich finde und irgendwann werde ich mich auch mal hinsetzen und alle quasi doppelt Funktionen nebst Konstanten rausschmeißen, um zu sehen, wie schnell und groß PHP dann noch ist.

              Könnte ja auch sein, dass PHP die Durchforstung der reinen Wertesammlung tatsächlich etwas schneller schafft, als das Herausfinden des zugehörigen Index...

              Was zu erforschen wäre …

              Im einfachen vergleich (ohne weiteres Arbeiten mit der Variable) ist in_array() nicht nur übersichtlicher - da leichter zu erfassen - sondern auch geringfügig schneller

              Gruß aus Berlin!
              eddi

              --
              Wer Rechtschreibfehler findet, darf sie behalten.
              1. Hallo eddi,

                Im einfachen vergleich (ohne weiteres Arbeiten mit der Variable) ist in_array() nicht nur übersichtlicher - da leichter zu erfassen - sondern auch geringfügig schneller

                Woher nimmst Du diese Aussage?
                Hast Du mal reingeschaut in PHP, wie das mit den Arrays geregelt ist?

                LG
                Chris

                1. Hallo Chris,

                  Im einfachen vergleich (ohne weiteres Arbeiten mit der Variable) ist in_array() nicht nur übersichtlicher - da leichter zu erfassen - sondern auch geringfügig schneller

                  Woher nimmst Du diese Aussage?

                  - aus einem Testergebnis.

                  Hast Du mal reingeschaut in PHP, wie das mit den Arrays geregelt ist?

                  hochkompliziert - soviel weiß ich nocht ;)

                  wie auch immer - Gut Nacht
                  eddi

                  --
                  Wer Rechtschreibfehler findet, darf sie behalten.