Abfrage ob in Array vorhanden

strukturart

Erfahrenes Mitglied
Hallo,

wie kann ich denn abfrage ob mehrere Werte in einem Array vorhanden sind.
In meinem Beispiel:
Ist $catego[name] ungleich 'Home' oder 'Mark' dann erstelle <li>....</li>

jetzt weiss ich nicht wie ich die Funktion in_array() einsetzen soll.



Code:
$exceptions = array('Home','Mark');

foreach($categories as $ide=>$catego) {
 if($catego[parent]==0)
              {
if($catego[name]!='Home' ){
echo "<li><h1><a href='?kategorie=$catego[name]'>".$catego[name]."</a></h1></li>";
}
}

}
 
Hallo strukturart,

suchst Du vielleicht array_key_exists ?

PHP:
foreach($exceptions as $item){
    if(array_key_exists($item,$catego['name'] == true)){       
        // entero somewhere elso
    }
}


Liebe Grüße
Splater
 
Hallo Splater,

danke für deine Antwort,

konnte es jetzt so lösen:

PHP:
<?php

$exceptions = array('Home','Mark');
$categories = cn_get_categories (true);

foreach($categories as $ide=>$catego) {


              if($catego[parent]==0)
              {

if(in_array($catego[name], $exceptions)){

}
    else
{
   
        echo "<li><h1><a href='?kategorie=$catego[name]'>".$catego[name]."</a></h1></li>";
       
            }
        }

     }
?>
 
Besser:

PHP:
function escape($s)
{
    return htmlspecialchars(
        $s,
        ENT_QUOTES | ENT_HTML5 | ENT_DISALLOWED | ENT_SUBSTITUTE,
        'UTF-8'
    );
}

$exceptions = array('Home', 'Mark');

$categories = cn_get_categories(true);

foreach ($categories as $catego) {
    // Guard-Clause, damit der Quellcode nicht unnötig tief eingerückt wird
    if (
        $catego['parent'] != 0
        || in_array($catego['name'], $exceptions)
    ) {
        continue;
    }

    // Ausgabe mit korrekter Behandlung der Kontextwechsel
    printf(
        '<li><a href="%s">%s</a></li>',
        escape('?' . http_build_query(array('kategorie' => $catego['name']))),
        escape($catego['name'])
    );
}

Setz zumindest die Feld-Indizes in Anführungszeichen. Das würde dir PHP auch als Fehler ankreiden, wenn du das Error-Reporting aktivieren würdest.
 
array_search (value), array_key_exists und array_filter mit callback.

oder der obere Ansatz ..
PHP:
foreach($categories as $ide => $catego){
  $name = $catego['name'];
  if($catego['parent'] && !array_search($name,$exceptions)){
    echo "<li><h1><a href='?kategorie=$name'>$name</a></h1></li>";
  }
}

Grüße, Marcel.
 
Zuletzt bearbeitet:
Zurück