2010-09-16 8 views
0

Actuellement, j'ai:Version succincte de simplexml/xpath?

$content = ($propXml->xpath('//content/section[@name="accommodations"]/content')); 
$content = is_array($content) && (count($content)>0)?(string)$content[0]:false; 
echo $content; 

Y at-il une façon plus succincte de le faire? Il serait plus court si PHP avait la possibilité d'accéder automatiquement à un tableau assigné, mais je dois réattribuer et vérifier la longueur ...

+0

+1 appris un nouveau mot: succinct :) – NikiC

+0

Ne pourriez-vous raccourcir cela à '$ content = isset ($ content [0])? (chaîne) $ content [0]: false; '? 'isset ($ content [0])' devrait échouer sur un booléen. – NikiC

+0

@meder: C'est une bonne question, mais pas à propos de l'expression XPath ... S'il vous plaît, retag. –

Répondre

0

Il y a plusieurs façons de rendre cela plus court mais tout dépend de ce que vous êtes faire dans votre script. Je ne suis pas choqué par cette opération en prenant 3 lignes de code mais de toute façon, voici quelques idées qui peuvent rendre votre code plus court, parfois au prix de la lisibilité diminué:

  • Utilisez empty()

    $content = (!empty($content)) ? (string) $content[0] : false; 
    
  • Echo le nœud directement: (il est automatiquement lancé comme une chaîne)

    echo (!empty($content)) ? $content[0] : ''; 
    
  • Utilisez array_shift() pour obtenir t Le premier élément d'un tableau. (attention, il ne modifier le tableau Si c'était le dernier élément, vous pouvez utiliser end() à la place.)

    echo array_shift($propXml->xpath('//content/section[@name="accommodations"]/content')); 
    
+0

c'est mieux que ma version isset ($ content [0]). Je n'ai pas pensé à vide ... – NikiC