2010-05-14 14 views

Répondre

4

Notez que vous faites écho et que la valeur null est sans effet. Vous pourriez dire comme 'empty' ou ' ' ou 'not found' à la place. Autre alternative est d'obtenir la valeur de retour de isset:

$return = isset($areas['footer']) ? $areas['footer'] : null; 

if ($return) 
{ 
    // $return contains footer info 
} 
else 
{ 
    // footer was not set :(
} 
+0

okay ... je le pensais mais je voulais être sûr car j'utilise très souvent ce genre de code et je voulais juste voir s'il y avait quelque chose à améliorer. Je vous remercie! – n00b

+0

@ booze2go: Vous êtes les bienvenus :) – Sarfraz

2

Selon l'endroit où $ les zones provient de cela pourrait être plus propre pour l'assigner à une variable:

$footer = isset($areas['footer']) ? $areas['footer'] : null; 

vous pouvez utiliser $ pied sans toute vérification supplémentaire d'isset.

-1
echo $areas['footer']; 

Simple et a exactement le même effet que la ligne d'origine.

Modifier en réponse à Felix Cela donne un avis, mais à moins que vous êtes censé tourner cela en tant que devoirs ultra-parfait, il n'a pas vraiment d'importance. Vous pouvez soit remplir votre code avec des appels isset ou ignorer les petites choses comme ça. Je m'inquiéterais si je travaillais sur ... Java, mais pragmatiquement, personne ne s'en souciera si le code PHP qui fonctionne produit des notices.

+1

Mais il vous donnera un avis/avertissement (ne sait pas lequel) si '$ areas' n'a pas d'élément avec la clé' footer'. –

+0

Le préfixe il avec @ pour le faire taire. – Pepijn

+1

@Pepijin: la désactivation d'un avertissement au lieu de corriger la condition qui l'a causé est généralement considérée comme un mauvais style de codage. – Powerlord

0

Vous pouvez également épargner la branche else, en définissant un défaut:

$footer = null; 
if (isset($areas['footer'])) { 
    $footer = $areas['footer']; 
} 

echo $footer; 
0

Non, c'est la façon la plus concise de gérer ce genre de sortie.

0

«J'utilise ce genre de code très souvent »

Peut-être que vous devriez éviter la question tout à fait à l'aide d'un langage de modèle ou d'encapsulation ce comportement dans une fonction?

comme ceci:

function get_area($area) { 
    if... //your code 
    return $area 
+1

Ironiquement, PHP est un langage de modèle, bien qu'il ne soit souvent pas utilisé de cette façon, car des choses comme des «langages de modèles réels» tels que Smarty existent. – apg

+0

Je savais que quelqu'un allait dire ça. Je n'ai jamais utilisé un langage de template avec PHP, mais je pense que PHP fait un mauvais travail en étant un bon langage de template. – Pepijn

0

Une version plus courte que je peux penser serait:

<?php !isset($areas['footer']) or print $areas['footer']; ?> 

Mais je ne sais pas s'il est plus rapide ou plus élégant. Qu'est-ce que vous en pensez?