【问题标题】:Performing a function one time and print its result multiple times instead of performing it again for each print执行一次功能并多次打印其结果,而不是每次打印都再次执行
【发布时间】:2021-07-13 08:51:51
【问题描述】:

我从一个大型 XML 中获取节点列表,然后对列表进行唯一性删除以删除重复项,现在我想将列表打印到多选输入表单中,但是,每个选择输入都需要一段时间才能打印为功能似乎在重复。

是否可以一次执行该功能,并将结果保存并多次打印?

$url = $_POST['url'];
$xml = simplexml_load_file($url) or die("URL Read Error");

// Get unique list of nodes in XML
function getNodes($xml) {

    // Create an empty array
    $nodes = array();

        array_push($nodes, $xml->getName());

            foreach ($xml->children() as $node) {

                $nodes = array_merge($nodes, getNodes($node));

            }

  return array_unique($nodes);

}

function nodesList() {

    $url = $_POST['url'];
    $xml = simplexml_load_file($url) or die("URL Read Error");
    $nodes = getNodes($xml); 
    foreach ($nodes as $node) {

        echo "<option value=" . $node . ">" . $node . "</option>";

    }
}

<?php echo nodesList(); ?>
<?php echo nodesList(); ?>
<?php echo nodesList(); ?>
<?php echo nodesList(); ?>
<?php echo nodesList(); ?>
<?php echo nodesList(); ?>

【问题讨论】:

    标签: php xml function loops foreach


    【解决方案1】:

    您应该只调用一次getNodes,您可以在nodesList 方法之外执行此操作,并将返回的节点列表传递给此函数。

    我已将 nodesList 的名称更改为 echoNodes,因为它更好地反映了实际代码(恕我直言)...

    function echoNodes($nodes) {
        foreach ($nodes as $node) {
            echo "<option value=" . $node . ">" . $node . "</option>";
        }
    }
    
    $url = $_POST['url'];
    $xml = simplexml_load_file($url) or die("URL Read Error");
    $nodes = getNodes($xml);
    
    // Display nodes
    echoNodes($nodes);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多