¿Cómo devolver múltiples valores de una matriz PHP (PHP-XML)?

Necesito ayuda para extraer datos de una matriz de PHP , después de lo cual necesito crear una etiqueta XML . Tengo una cadena como se puede ver a continuación. A veces hay un dato, es decir, una imagen, a veces hay varias imágenes

[0]=> "https://test.com/1.jpg" 
[1]=> "https://test.com/2.jpg" 
[2]=> "https://test.com/3.jpg"
...

Creé una función php, que funciona bien cuando encuentra una sola imagen, sin embargo, cuando encuentra varias imágenes, devuelve solo el primer elemento (imagen) en la matriz.

function Photo($Images) 
    {
    $br=count($Images);
    if ($br==1){ return "<photo><url>".$Images."</url><priority><![CDATA[1]]></priority></photo>"; }
    elseif ($br>1) 
        {
            $broj=count($Images);
            foreach ($Images as $value) 
            {
            for ($i = 0; $i < $broj; $i++) {
                }
                return "<photo><url>$value</url></photo>";
            }
        }
    }

Necesito la función para devolver una etiqueta XML con la URL de la imagen y el número ordinal en la secuencia, por ejemplo

<photo> <url> https://test.com/1.jpg </url> <priority> 1 </priority> </photo>
<photo> <url> https://test.com/2.jpg </url> <priority> 2 </priority> </photo>
etc

Tengo un problema con XML anidado y con una función de retorno en PHP. En otras palabras, necesito que la función devuelva todos los elementos de la matriz, no solo el primero.

Con eco, me dispara todo y me informa de un error.

Estoy aprendiendo PHP y necesito ayuda.

Gracias

Answer

Su problema es que usa la returnpalabra clave, que aborta toda la función y finaliza el forciclo antes de tiempo, solo devolviendo el primer valor en la matriz.

En su lugar, una opción es tener una cadena que contenga el XML actual que tiene y seguir agregando hasta que se forcomplete el ciclo. Después del forciclo, puede returnesa cadena.

function Photo($Images) {
    $br = count($Images);
    if ($br == 1) {
        return "<photo><url>".$Images."</url><priority><![CDATA[1]]></priority></photo>";
    } elseif ($br > 1) {
        // Start off with an empty string
        $imagesString = "";
        foreach ($Images as $value) {
            // Append to the end of the string
            $imagesString .= "<photo><url>$value</url></photo>";
        }
        return $imagesString;
    }
}