0

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 ファイルをスキャンし、その用語をリスト要素として、その関数に固有の順序付けられていないリストに追加します。次の関数は同じことを行いますが、別の用語/キーワードを対象とし、別の順序なしリストに追加します。

foreach を実行する必要がないように、これらすべてを組み合わせて、25 回続けて実行する方法はありますか?

ありがとう!

4

2 に答える 2

1

関数を抽象化します。

ファイル検索用語を引数として関数に渡し、それを操作します。

何かのようなもの:

function parse_xml_file($file, $terms)

次に、関数を呼び出すときにpass $fileandを使用します。$terms

詳細については、大きな悪いマニュアルを参照してください。

于 2012-04-19T20:00:35.300 に答える
0

この修正された関数は、1 つのパラメーター (検索する単語) を取り、それを 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>';
}
于 2012-04-19T19:57:36.463 に答える