PHP if-Abfrage mit Array

hallo

ich habe in PHP ein Array, eine Variable und eine if Abfrage

<?php $fid = 9 $fids = array(7,8,9,10,11,12); if($fid == $fids) { echo $fid; }

Das geht aber nicht, die Bedingung wird nicht ausgeführt.

Weis jemand wie man die if Abfrage schreiben muss, damit er prüft, ob $fid im Array $fids enthalten ist?

Danke

bosz4

das machst du mit der funktion in_array

also:

<?php $fid = 3; $fids = array(3,7,8,9,10,11,12); if(in_array($fid, $fids)) echo $fid; ?>

das ist die kurzschreibweise.
das problem ist, das du die inhalte eines arrays nur mithilfe der genauen kennung für den array-inhalt erreichst.
also:

if ($fid == $fids[$i])
echo $fid

EDIT:

Solltest du überprüfen wollen, ob $fid in $fids enthalten ist, geht das mit einer for-schleife.
dabei wird für jeden arraywert überprüft, ob $fid und $fids[$i] ist:

for ($i=0;$i<=sizeof($fids);$i++){
if ($fid == $fids[$i])
echo $fid
}

[/code]

danke,

das $fid ist festgelegt.

mit einer foreach Schleife geht das besser, da nicht notgedrungen jedes Array Element einen Zahlenindex haben muss.

foreach($fids as $fidelement)
{
    if($fid == $fidelement)
    {
        echo $fid;
    }
}

oder

wenn man auch noch den index wissen will.

aber nur um zu überprüfen, ob das Element im Array vorhanden ist, empfiehlt sich immernoch in_array()

Edit:
und wenn man es noch genauer nimmt, ist die Form

nicht ganz korrekt, da sizeof() die Anzahl der Array Elemente zurückliefert, nicht das höchste Element.
von daher muss die Laufbedingung $i<sizeof($fids) heißen.
Bei 10 Elementen, die durchlaufend sind, und bei 0 beginnen, hat das höchste Element den index 9 :wink:

mfg Balmung :slight_smile:

Die ID eines Arrayteils findest du bequem über die Funktion array_search heraus :wink:

$id = array_search($fid, $fids);
// $fids[$id] == $fid ;-)

Die erschöpfende Antwort zu der konkreten Frage wurde ja bereits von an-di gegeben oder ist es hier so üblich gleich Fragen zu beantworten, die nicht gestellt wurden ?

es ist unüblicher 5 Tage alte Threads auszugraben, die schon beantwortet sind :wink:

Du schreibst wohl gerne ?

Als letzter noch einen Tipp abliefern der nicht einmal zur Frage passt und im Verlauf nur funzt wenn es sich um ein Array mit eindeutigen Werten handelt, was aber für die Frage selbst völlig uninteressant ist.

Hast wohl mal wieder etwas im Handbuch gefunden. :hail:

Schade um die Zeit - man sollte sich nicht mit Forenfüllern abgegeben - Thema für mich erledigt, habe wichtigeres zu tun.