2009-09-03 9 views
1

Je suis dans une liaison, plusieurs fois sur une page pour différents éléments de formulaire, j'insère une classe css div dans un élément de formulaire SEULEMENT si un tableau d'erreur La clé existe, c'est ainsi que je souligne un élément de formulaire qui contient une erreur. Fonctionne bien, si j'ai une erreur, car alors mon tableau d'erreur est défini, le problème est avant qu'une erreur soit définie, il essaie de rechercher une clé de tableau qui n'existe pas. Je pensais que l'utilisation de la fonction isset de php serait d'abord le ticket mais je suppose que vous ne pouvez pas combiner isset avec une autre fonction?Comment puis-je vérifier qu'une clé de tableau existe si le tableau n'existe pas en PHP?


<?php 
//this works 
$search_array = array('first' => 1, 'second' => 4); 

if (array_key_exists('first', $search_array)){ 
    echo "good"; 
} 


// this does not work, will give write errors 
$search_array = array('first' => 1, 'second' => 4); 

if (isset(array_key_exists('first', $search_array))){ 
    echo "good"; 
} 

// Here is 1 example how I need to make the end result work 
$country_class = (array_key_exists('country', $signup_errors)) ? ' signup_error' : ' signup_good'; 
echo '<select name="country" id="country" class="textarealong ' .$country_class. '"/>'; 
?> 

Dans d'autres parties que je l'utilise comme celui-ci

<?PHP echo(array_key_exists('password', $signup_errors)) ? ' signup_error' : ' signup_good';?> 

Et je dois avoir ce soit un code 1 ligne si possible

Répondre

4

Si isset est fausse, la deuxième déclaration ne sera pas exécuté, car les parseurs savent que les deux instructions doivent être vraies pour que l'ensemble de l'instruction soit vraie.

$country_class = (isset($signup_errors) && array_key_exists('country', $signup_errors)) ? ' signup_error' : ' signup_good'; 

mais je vous suggère d'initialiser toutes les variables que vous utilisez ...

+0

également au sujet de votre commentaire, ne pas initialiser cette variable? – JasonDavis

+0

Non, car même si 'array_key_exists' auto-vivifie $ signup_errors (et je suis sûr que ce n'est pas le cas), alors l'échec de' isset() 'l'empêchera de s'exécuter du tout. 'isset()' n'est évidemment pas autorisé à vivifier les variables qu'il teste. – Guss

0

Je ne suis pas assez familier avec la syntaxe PHP, mais cela sonne comme un travail d'évaluation de court-circuit, c'est à dire || ou & &, où le second terme n'est pas évalué si le premier terme seul peut déterminer le résultat (s'il est vrai dans || ou Faux dans & &).

0

Ceci est une vieille question, mais c'est une réponse encore plus simple. isset vérifie le tableau et la clé. Cela fonctionne très bien et ne génère pas d'avis si le tableau n'est pas réglé:

if (isset($search_array['first'])){ 
    echo "good"; 
} 

Ou:

$country_class = isset($signup_errors['country']) ? ' signup_error' : ' signup_good'; 
Questions connexes