AnswerBun.com

Como eu posso melhorar este loop que tem um foreach dentro de outro?

Stack Overflow em Português Asked by Marcos Vinicius on December 22, 2020

Estou fazendo este código que tem 2 foreach’s e carrega 350 imóveis com mais ou menos 3500 links de imagens, na verdade não chamei as fotos, só os links, isso tudo carrega em meio segundo.

A variável $array armazena conteúdo de um XML. Dentro desse XML tem várias informações inclusive arrays de informações como Media que armazena todas as imagens do imóvel.

No caso abaixo, o segundo array pega $imovel->Media->Item e faz uma listagem das fotos que estão no imóvel.

<?php

$xml = simplexml_load_file("xml_vivareal.xml") or die("Error: Cannot create object");
$array = $xml->Listings->Listing;
$number = 1;

foreach ($array as $imovel) {
    echo $number++ ." - ". $imovel->ListingID . "<br>";
    echo $imovel->Title . "<br>";

    foreach ($imovel->Media->Item as $fotos) {
        echo $fotos . "<br>";
    }

    echo "<br>";
}

Resultado produzido:

inserir a descrição da imagem aqui

One Answer

Uma maneira alternativa é armazenando o conteúdo HTML e imprimir (echo) tudo no final, podendo assim usar a função implode no lugar do foreach interno.

Veja o código abaixo:

<?php
$xml = simplexml_load_file("xml_vivareal.xml") or die("Error: Cannot create object");
$array = $xml->Listings->Listing;
$number = 1;
$html = '';

foreach ($array as $imovel) {
    $html .= $number++ ." - ". $imovel->ListingID . "<br>";
    $html .= $imovel->Title . "<br>";

    $html .= implode("<br>", $imovel->Media->Item);

    $html .= "<br>";
}

echo $html;

?>

Acredito que dessa maneira o código fique mais limpo e elegante. Com relação à performance, seria bom que você fizesse um teste nas duas versões e postasse o resultado.

Answered by Brittz on December 22, 2020

Add your own answers!

Related Questions

The operator + is undefined for the argument type(s) CharSequence, int

1  Asked on January 2, 2022 by marcos-paulo-s-rezende

       

Entidades classes

1  Asked on January 2, 2022

     

Relacionamento entre tabelas com Sequelize

1  Asked on January 2, 2022 by vitor-cordeiro

     

EOFError: EOF when reading a line

2  Asked on January 2, 2022 by bilbo

       

Yup mixed não funciona notRequired ou nullable

1  Asked on January 2, 2022 by braga-us

     

TypeOrm consulta com Inner Join está vindo vazia

1  Asked on January 2, 2022 by gustavo-benevenuto

         

Como centralizar um menu (div) fixo?

1  Asked on January 2, 2022 by the-witcher0

   

Axios: params em GET não funciona – React Native

1  Asked on January 2, 2022 by joseph-isaac

       

Problemas ao alinhar div no lado direito

1  Asked on January 2, 2022 by imm-telecom

   

wp_pagenavi não funciona em category.php

2  Asked on December 30, 2021 by juliano-arajo

   

Problema com o Split() no Mono

1  Asked on December 30, 2021 by ygor-kayan

     

Crio uma tabela ou várias no SQL Server?

1  Asked on December 30, 2021 by denilson-carlos

         

Ask a Question

Get help from others!

© 2022 AnswerBun.com. All rights reserved. Sites we Love: PCI Database, MenuIva, UKBizDB, Menu Kuliner, Sharing RPP