2010-09-16 8 views
0

В настоящее время у меня есть:Краткая версия simplexml/xpath?

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

Есть ли более емкий способ сделать это? Было бы короче, если бы PHP имел возможность автоматически получать доступ к назначенному массиву, но мне нужно переназначить и проверить длину ...

+0

+1 узнал новое слово: сжатое :) – NikiC

+0

не могли бы вы Сократите это до '$ content = isset ($ content [0])? (string) $ content [0]: false; '? 'isset ($ content [0])' должен терпеть неудачу на логическом уровне. – NikiC

+0

@meder: Это справедливый вопрос, но не о выражении XPath ... Пожалуйста, повторите. – 2010-09-16 20:35:38

ответ

0

Есть много способов сделать это короче, но все зависит от того, что вы в вашем скрипте. Я не в шоке от этой операции, принимая 3 строки кода, но в любом случае, вот несколько идей, которые могут сделать ваш код короче, иногда по цене сниженной читаемости:

  • Использование empty()

    $content = (!empty($content)) ? (string) $content[0] : false; 
    
  • Echo узел непосредственно: (он автоматически получает отливают в виде строки)

    echo (!empty($content)) ? $content[0] : ''; 
    
  • Используйте array_shift(), чтобы получить т он первый элемент массива. (внимание, это делает изменяет массив Если это был последний элемент, вы можете использовать вместо end().)

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

это лучше, чем мой вариант isset ($ content [0]). Не думал о пустом ... – NikiC

Смежные вопросы