1

想要将一个组移动到另一个组,但在某种程度上它最终会花费大量的执行时间,并且脚本永远不会结束。问题出在 foreach 循环休息函数中。我没有看到任何错误

<?php
// fouten laten zien
error_reporting(~0); 
ini_set('display_errors', 1); 

// test bestand
$bestand = "00000000346.svg";

// maak nieuwe dom
$dom = new DOMDocument; 

// laat svg in dom
$dom->load($bestand);

// krijg svg element
$svg = $dom->getElementsByTagName("svg")->item(0);

// toevoegen link attribute
$svg->setAttribute("xmlns:xlink", "http://www.w3.org/1999/xlink");

// maak script tag
$script = $dom->createElement("script");

// zet script link
$script->setAttribute("xlink:href", "svg_zoom_pan.js");

// toevoegen aan svg
$dom->documentElement->appendChild($script);

// maak groep tag
$svgroot = $dom->createElement("g");

// zet een id
$svgroot->setAttribute("id", "svgroot");

// toevoegen aan svg
$dom->documentElement->appendChild($svgroot);

// krijg alle groepen
$groups = $dom->getElementsByTagName("g");

// doorloop groepen
foreach($groups as $group) {

    if($group->getAttribute("id") != "svgroot") {

        // clone groep
        $cloned = $group->cloneNode(true);

        // toevoegen aan svgroot groep  
        $dom->getElementById("svgroot")->appendChild($cloned);

    }
}

// opslaan bestand
$dom->save("svg_" . $bestand);

?>
4

1 回答 1

1

返回节点的getElementsByTagName实时列表。这意味着当您向文档添加更多组时,变量$groups将被更新以包含这些新组。

由于您正在循环遍历元素的活动列表并在每次迭代中添加一个更多元素,因此活动列表会更长并且循环将永远不会结束。

于 2012-05-08T11:47:06.460 回答