phpbar.de logo

Mailinglisten-Archive

[php] in_array()

[php] in_array()

Ulf Wendel UW_(at)_NetUSE.DE
Fri, 28 Jan 2000 10:05:49 +0100


Marcus Schwarz wrote:
> Daher die Frage: welche Alternative war das noch gleich?

Funktion selber programmieren...


+++ Code +++

// boolean my_in_array ( mixed $needle, array $haystack) 
function my_in_array($needle, $haystack) {
  # Korrekt aufgerufen?
  if (""==$needle || !is_array($haystack) || 0==count($haystack))
    return false;
  
  if (is_array($needle)) {
    # Arrays werden miteinander verglichen
    $flag_gefunden = false;
    reset($needle);
    while (list($k, $v)=each($needle)) 
      if (my_in_array($v, $haystack)) {
        $flag_gefunden = true;
        break;
      }
      return $flag_gefunden;   
  } else {
     # Nadel ist kein Array, einfache Überprüfung
     reset($haystack);
     while (list($k, $v)=each($haystack)) 
       if ($v==$needle) 
          return true;
  }
    
} // end func my_in_array

+++ Erklärung +++

# Korrekt aufgerufen:
Prüft ob die Funktion mit Argumenten aufgerufen wurde, die sie
verarbeiten kann. Traue keinem, nicht mal Dir selbst....

# Arrays werden miteinander verglichen
Falls die Needle ein Array ist, erfolgt ein rekursiver Durchlauf
durch alle Elemente. Sobald eine Übereinstimmung festgestellt
wird, wird die Funktion mit return beendet. Bei extrem großen
Arrays könnte ein stack Überlauf entstehen. Dies ist jedoch sehr
unwahrscheinlich.

# Nadel ist kein Array, einfache Überprüfung
Das ist einfache...

Ulf

-- 
Ulf Wendel
NetUSE Kommunikationstechnologie GmbH
Siemenswall, D-24107 Kiel, Germany
Fon: +49 431 386435 00  --  Fax: +49 431 386435 99


php::bar PHP Wiki   -   Listenarchive