gpt4 book ai didi

php - SimpleXML 问题,将项目列表包装在一个

转载 作者:行者123 更新时间:2023-11-29 07:11:18 24 4
gpt4 key购买 nike

问题:我想从数据库中获取所有位置并将它们全部包含在 <loc> 中标记,以下代码将每个位置放在 <loc> 中标签,导致几个 <loc>当我只需要一个。我知道它这样做是因为它在一个循环内(simpleXML 部分),但不知道如何解决它。

    if($r7){ //$r7 = If query was successfull..     
while($row = mysqli_fetch_array($r7, MYSQLI_ASSOC)){
$convXML_from_loc = $convXML_from->addChild('loc',$row['location']);
}
}

如果我将它从循环中取出,它只会将数据库中的第一个位置放在那里 (iirc)。

替代方法是 echo "<xml>";我认为这是不好的做法,因为没有父元素和子元素,所有元素都处于同一水平。

我将不胜感激有关此问题的任何指导,以及指向有关此主题的任何相关信息的链接。

问候。

编辑:如果不清楚,我需要将它们全部放在一个 loc 标签中,例如 <loc>Row 1, Row 2</loc> .目前它正在提供 <loc>Row 1</loc><loc>Row 2</loc> .

最佳答案

您有一个循环遍历每一行的 while 循环。您将在循环中做任何事情,次数与行数一样多。所以你将制作尽可能多的<loc>元素有行,每行一个。

解决方案是在 while 循环中生成一个包含所有行数据的字符串,然后添加 <loc>该字符串在循环外的元素。这导致 addChild()只被调用一次,因此只创建一个 <loc>元素。

$location_data;

if($r7){ //$r7 = If query was successfull..
while($row = mysqli_fetch_array($r7, MYSQLI_ASSOC)){
$location_data .= $row['location'] . ' ,';
}
}

$location_data = substr($location_data, 0, -2); // strip off the final space and comma
$convXML_from_loc = $convXML_from->addChild('loc',$location_data); // will result in '<loc>Row 1, Row 2</loc>'

关于php - SimpleXML 问题,将项目列表包装在一个 <tag> 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4318585/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com