SVG 将组移动到其他组


SVG Move group to other group

想要将一个组移动到另一个组中,但在某种程度上,它最终需要巨大的执行时间,并且脚本永远不会结束。 问题出在 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);
?>

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

由于您正在循环访问元素的实时列表

并在每次迭代中再添加一个元素,因此实时列表会更长,循环永远不会结束。