2012-04-19 4 views
0

Я унаследовал некоторый php, который анализирует XML-файл, чтобы заполнить страницу, полную неупорядоченных списков, и мне интересно, есть ли способ консолидировать функции php, чтобы сделать их более эффективными.Объединение функций PHP

Есть 25 или так функционирует, как следующее:

function oaAccounting(){ 

    // load SimpleXML 
    $term = new SimpleXMLElement('training_list.xml', null, true); 
    echo <<<EOF 
    <ul> 
EOF; 

    foreach($term as $term) 
    { 
    if(preg_match("/accounting/i", $term->keyword)){ 
     echo <<<EOF 
     <li>{$term->name}</li> 
EOF; 
    } 
    } 
    echo '</ul>'; 
} 

каждый просматривает файл XML для термина/ключевого слова, это поиск и добавляет этот термин в качестве элемента списка на неупорядоченный список специфического для данного функция. Следующая функция выполняет одно и то же, но для другого ключевого слова term/и добавляет его в отдельный неупорядоченный список.

Есть ли способ объединить все это, чтобы избежать необходимости делать foreach и если 25 раз подряд?

Спасибо!

+2

Да, изучите PHP. – IsisCode

+1

Переписать. Вы поняли, что '$ term' перезаписывается на каждой итерации? И почему регулярные выражения? XML имеет xpath для этого. – KingCrunch

ответ

0

Эта пересмотренная функция принимает один параметр, слово для поиска, а затем использует его в функции preg_match(). Поэтому, чтобы использовать все, что вам нужно сделать, это позвонить ему с термином, который вы ищете. Это должно заменить все жестко закодированные функции.

function searchXML($search){ 

    // load SimpleXML 
    $terms = new SimpleXMLElement('training_list.xml', null, true); 
    echo <<<EOF 
    <ul> 
    EOF; 
    foreach($terms as $term) 
    { 
     if(preg_match("/$search/i", $term->keyword)){ 
      echo <<<EOF 
      <li>{$term->name}</li> 
     EOF; 
    }} 
    echo '</ul>'; 
} 
+0

Неверно, вы бы переопределили аргумент '$ term' с помощью' SimpleXMLElement'. –

+1

@Truth То, что OP уже написал в своем вопросе. Не знаю, почему ... – KingCrunch

+0

Я только что заметил свою ошибку и исправил ее при форматировании кода. Я не знаю, стоит ли голосовать. Вы могли бы отредактировать ответ и исправить его. –

1

Аннотация ваша функция.

Пропустите файл и условия поиска как аргументы функции, и работать с этим.

Что-то вроде:

function parse_xml_file($file, $terms) 

Затем используйте проход $file и $terms при вызове функции.

Для получения дополнительной информации см. Teh big bad manual.

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