Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/250.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php symfony2xpath返回重复的节点_Php_Mysql_Symfony_Xpath_Nodes - Fatal编程技术网

Php symfony2xpath返回重复的节点

Php symfony2xpath返回重复的节点,php,mysql,symfony,xpath,nodes,Php,Mysql,Symfony,Xpath,Nodes,我试图从一个XML文件执行一些sql查询,但是当我从一个标记获得查询时,它返回查询的次数比预期的要多 <?xml version="1.0" encoding="utf-8"?> <informes> <informe> </informe> <indicadores> <indicador> <sql> SELECT

我试图从一个XML文件执行一些sql查询,但是当我从一个标记获得查询时,它返回查询的次数比预期的要多

<?xml version="1.0" encoding="utf-8"?>
<informes>
    <informe>
    </informe>
    <indicadores>
        <indicador>
            <sql>
                SELECT concat('Total Facturacion: ', round(sum(total))) as valor FROM infomatrix.dtmax_facturacion
            </sql>
            <link>

            </link>
        </indicador>
        <indicador>
           <sql>
                SELECT concat('Stock total: ', round(sum(cantidad))) as valor FROM infomatrix.dtmax_stock
           </sql>
           <link>

           </link>
        </indicador>
    </indicadores>
</informes>

由于节点之间的结构相同,$SqlIndicator将返回2个结果,您将对其进行迭代并获得另外2个结果


将您的过滤器设置为“informes/indicator”,然后循环到其中,这将是“indicator”元素,在这种情况下会产生2个结果。从这个元素可以得到sql。

它不起作用。它可能会返回两个查询,但每个查询都会返回四次。你能做一个phpfiddle之类的吗?
    $sqlIndicador = $crawler->filterXpath('informes/indicadores/indicador');
    $elements = array();
    foreach($sqlIndicador as $element){
        $elements[] = $element->getElementsByTagName("sql")->item(0)->nodeValue;
    }
    $indicadores = array();
    foreach ($elements as $indicador) {
        $data = $repositorio->obtenerSqlIndicador($indicador);
        array_push($indicadores,$data);
    }