Краткая версия simplexml / xpath? - PullRequest
0 голосов
/ 17 сентября 2010

В настоящее время у меня есть:

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

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

1 Ответ

0 голосов
/ 17 сентября 2010

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

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

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

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

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