Foreach PHP 循环数组+字符串
Foreach PHP Loop Array + String
#1
如何合并:
$enderecofoto = $xml->imovel[$i]->fotos->foto;
$nomeeextensao = preg_replace("(^.*\/(.*)$)", "",$enderecofoto);
$removenomeeextensao = str_replace($nomeeextensao, "", $enderecofoto);
$nomefoto = substr($nomeeextensao, 0 , (strrpos($nomeeextensao, ".")));
$foto = $xml->imovel[$i]->fotos->addChild('foto');
$foto->addAttribute('path', $removenomeeextensao);
$foto->addAttribute('arquivo', $nomeeextensao);
$foto->addAttribute('titulo', $nomefoto);
#2
进入这个 Foreach:
foreach($xml->imovel[$i]->fotos->foto as $foto) {
$fotos = array();
foreach ($xml->imovel[$i]->fotos->foto as $foto) {
$fotos[] = "$foto";
// or you could use, I believe: $fotos[] = $foto[0]
}
var_dump($fotos);
echo "<hr />";
}
为了将第一个代码的单一结果替换为多结果方法。
这应该适用于 SimpleXML :D
#1 我可以获得第一张图片并将其设为 xml 标签。 #2 我可以获得包含所有图片的数组。但现在我无法将每个结果转换为简单的xml 标签。
如何解决?
-----编辑------
使用这个:
foreach($xml->imovel[$i]->fotos->foto as $foto) {
$fotos = array();
foreach ($xml->imovel[$i]->fotos->foto as $foto) {
$fotos[] = "$foto";
// or you could use, I believe: $fotos[] = $foto[0]
}
var_dump($fotos);
echo "<hr />";
$nomeeextensao = preg_replace("(^.*\/(.*)$)", "",(string)$foto);
$removenomeeextensao = str_replace((string)$nomeeextensao, "", (string)$foto);
$nomefoto = substr((string)$nomeeextensao, 0 , (strrpos((string)$nomeeextensao, ".")));
$fotoxml = $xml->imovel[$i]->fotos->addChild('fotomudar');
$fotoxml->addAttribute('path', (string)$removenomeeextensao);
$fotoxml->addAttribute('arquivo', (string)$nomeeextensao);
$fotoxml->addAttribute('titulo', (string)$nomefoto);
}
unset($xml->imovel[$i]->fotos->foto);
我得到:
<fotomudar path="http://localhost:8090/xml/" arquivo="IMG_33011.jpg" titulo="IMG_33011"/>
<fotomudar path="http://localhost:8090/xml/" arquivo="IMG_33011.jpg" titulo="IMG_33011"/>
<fotomudar path="http://localhost:8090/xml/" arquivo="IMG_33011.jpg" titulo="IMG_33011"/>
<fotomudar path="http://localhost:8090/xml/" arquivo="IMG_33011.jpg" titulo="IMG_33011"/>
<fotomudar path="http://localhost:8090/xml/" arquivo="IMG_33011.jpg" titulo="IMG_33011"/>
<fotomudar path="http://localhost:8090/xml/" arquivo="IMG_33011.jpg" titulo="IMG_33011"/>
<fotomudar path="http://localhost:8090/xml/" arquivo="IMG_33011.jpg" titulo="IMG_33011"/>
<fotomudar path="http://localhost:8090/xml/" arquivo="IMG_33011.jpg" titulo="IMG_33011"/>
<fotomudar path="http://localhost:8090/xml/" arquivo="IMG_33011.jpg" titulo="IMG_33011"/>
<fotomudar path="http://localhost:8090/xml/" arquivo="IMG_33011.jpg" titulo="IMG_33011"/>
<fotomudar path="http://localhost:8090/xml/" arquivo="IMG_33011.jpg" titulo="IMG_33011"/>
<fotomudar path="http://localhost:8090/xml/" arquivo="IMG_33011.jpg" titulo="IMG_33011"/>
<fotomudar path="http://localhost:8090/xml/" arquivo="IMG_33011.jpg" titulo="IMG_33011"/>
所以...我只得到每个元素的第一张复制图片。
如果有 10 张照片,我得到 10 行重复的第一张图片:(
改变时:
$nomeeextensao = preg_replace("(^.*\/(.*)$)", "", $foto);
$removenomeeextensao = str_replace($nomeeextensao, "", $foto);
为:
$nomeeextensao = preg_replace("(^.*\/(.*)$)", "", $fotos);
$removenomeeextensao = str_replace($nomeeextensao, "", $fotos);
我得到:
<fotomudar path="Array" arquivo="Array" titulo=""/>
<fotomudar path="Array" arquivo="Array" titulo=""/>
<fotomudar path="Array" arquivo="Array" titulo=""/>
<fotomudar path="Array" arquivo="Array" titulo=""/>
<fotomudar path="Array" arquivo="Array" titulo=""/>
<fotomudar path="Array" arquivo="Array" titulo=""/>
<fotomudar path="Array" arquivo="Array" titulo=""/>
<fotomudar path="Array" arquivo="Array" titulo=""/>
<fotomudar path="Array" arquivo="Array" titulo=""/>
<fotomudar path="Array" arquivo="Array" titulo=""/>
<fotomudar path="Array" arquivo="Array" titulo=""/>
<fotomudar path="Array" arquivo="Array" titulo=""/>
我做到了!
foreach($xml->imovel[$i]->fotos->foto as $foto) {
$fotos = array();
$nomeeextensao = preg_replace("(^.*\/(.*)$)", "",$foto);
$removenomeeextensao = str_replace($nomeeextensao, "",$foto);
$nomefoto = substr((string)$nomeeextensao, 0 , (strrpos((string)$nomeeextensao, ".")));
$fotoxml = $xml->imovel[$i]->fotos->addChild('fotomudar');
$fotoxml->addAttribute('path', (string)$removenomeeextensao);
$fotoxml->addAttribute('arquivo', (string)$nomeeextensao);
$fotoxml->addAttribute('titulo',(string) $nomefoto);
}
unset($xml->imovel[$i]->fotos->foto);
现在只需通过 simplexml 保存并通过 file_get_content 打开并使用 str_replace 将 "fotomudar" 更改为 "foto"。 :D
#1
如何合并:
$enderecofoto = $xml->imovel[$i]->fotos->foto;
$nomeeextensao = preg_replace("(^.*\/(.*)$)", "",$enderecofoto);
$removenomeeextensao = str_replace($nomeeextensao, "", $enderecofoto);
$nomefoto = substr($nomeeextensao, 0 , (strrpos($nomeeextensao, ".")));
$foto = $xml->imovel[$i]->fotos->addChild('foto');
$foto->addAttribute('path', $removenomeeextensao);
$foto->addAttribute('arquivo', $nomeeextensao);
$foto->addAttribute('titulo', $nomefoto);
#2
进入这个 Foreach:
foreach($xml->imovel[$i]->fotos->foto as $foto) {
$fotos = array();
foreach ($xml->imovel[$i]->fotos->foto as $foto) {
$fotos[] = "$foto";
// or you could use, I believe: $fotos[] = $foto[0]
}
var_dump($fotos);
echo "<hr />";
}
为了将第一个代码的单一结果替换为多结果方法。
这应该适用于 SimpleXML :D #1 我可以获得第一张图片并将其设为 xml 标签。 #2 我可以获得包含所有图片的数组。但现在我无法将每个结果转换为简单的xml 标签。
如何解决?
-----编辑------ 使用这个:
foreach($xml->imovel[$i]->fotos->foto as $foto) {
$fotos = array();
foreach ($xml->imovel[$i]->fotos->foto as $foto) {
$fotos[] = "$foto";
// or you could use, I believe: $fotos[] = $foto[0]
}
var_dump($fotos);
echo "<hr />";
$nomeeextensao = preg_replace("(^.*\/(.*)$)", "",(string)$foto);
$removenomeeextensao = str_replace((string)$nomeeextensao, "", (string)$foto);
$nomefoto = substr((string)$nomeeextensao, 0 , (strrpos((string)$nomeeextensao, ".")));
$fotoxml = $xml->imovel[$i]->fotos->addChild('fotomudar');
$fotoxml->addAttribute('path', (string)$removenomeeextensao);
$fotoxml->addAttribute('arquivo', (string)$nomeeextensao);
$fotoxml->addAttribute('titulo', (string)$nomefoto);
}
unset($xml->imovel[$i]->fotos->foto);
我得到:
<fotomudar path="http://localhost:8090/xml/" arquivo="IMG_33011.jpg" titulo="IMG_33011"/>
<fotomudar path="http://localhost:8090/xml/" arquivo="IMG_33011.jpg" titulo="IMG_33011"/>
<fotomudar path="http://localhost:8090/xml/" arquivo="IMG_33011.jpg" titulo="IMG_33011"/>
<fotomudar path="http://localhost:8090/xml/" arquivo="IMG_33011.jpg" titulo="IMG_33011"/>
<fotomudar path="http://localhost:8090/xml/" arquivo="IMG_33011.jpg" titulo="IMG_33011"/>
<fotomudar path="http://localhost:8090/xml/" arquivo="IMG_33011.jpg" titulo="IMG_33011"/>
<fotomudar path="http://localhost:8090/xml/" arquivo="IMG_33011.jpg" titulo="IMG_33011"/>
<fotomudar path="http://localhost:8090/xml/" arquivo="IMG_33011.jpg" titulo="IMG_33011"/>
<fotomudar path="http://localhost:8090/xml/" arquivo="IMG_33011.jpg" titulo="IMG_33011"/>
<fotomudar path="http://localhost:8090/xml/" arquivo="IMG_33011.jpg" titulo="IMG_33011"/>
<fotomudar path="http://localhost:8090/xml/" arquivo="IMG_33011.jpg" titulo="IMG_33011"/>
<fotomudar path="http://localhost:8090/xml/" arquivo="IMG_33011.jpg" titulo="IMG_33011"/>
<fotomudar path="http://localhost:8090/xml/" arquivo="IMG_33011.jpg" titulo="IMG_33011"/>
所以...我只得到每个元素的第一张复制图片。 如果有 10 张照片,我得到 10 行重复的第一张图片:(
改变时:
$nomeeextensao = preg_replace("(^.*\/(.*)$)", "", $foto);
$removenomeeextensao = str_replace($nomeeextensao, "", $foto);
为:
$nomeeextensao = preg_replace("(^.*\/(.*)$)", "", $fotos);
$removenomeeextensao = str_replace($nomeeextensao, "", $fotos);
我得到:
<fotomudar path="Array" arquivo="Array" titulo=""/>
<fotomudar path="Array" arquivo="Array" titulo=""/>
<fotomudar path="Array" arquivo="Array" titulo=""/>
<fotomudar path="Array" arquivo="Array" titulo=""/>
<fotomudar path="Array" arquivo="Array" titulo=""/>
<fotomudar path="Array" arquivo="Array" titulo=""/>
<fotomudar path="Array" arquivo="Array" titulo=""/>
<fotomudar path="Array" arquivo="Array" titulo=""/>
<fotomudar path="Array" arquivo="Array" titulo=""/>
<fotomudar path="Array" arquivo="Array" titulo=""/>
<fotomudar path="Array" arquivo="Array" titulo=""/>
<fotomudar path="Array" arquivo="Array" titulo=""/>
我做到了!
foreach($xml->imovel[$i]->fotos->foto as $foto) {
$fotos = array();
$nomeeextensao = preg_replace("(^.*\/(.*)$)", "",$foto);
$removenomeeextensao = str_replace($nomeeextensao, "",$foto);
$nomefoto = substr((string)$nomeeextensao, 0 , (strrpos((string)$nomeeextensao, ".")));
$fotoxml = $xml->imovel[$i]->fotos->addChild('fotomudar');
$fotoxml->addAttribute('path', (string)$removenomeeextensao);
$fotoxml->addAttribute('arquivo', (string)$nomeeextensao);
$fotoxml->addAttribute('titulo',(string) $nomefoto);
}
unset($xml->imovel[$i]->fotos->foto);
现在只需通过 simplexml 保存并通过 file_get_content 打开并使用 str_replace 将 "fotomudar" 更改为 "foto"。 :D