¿Cómo hacer que dos bucles foreach sean DRY (Don’t Repeat Yourself)?
No puedo encontrar una forma de reducir esto a un solo bucle. El procesamiento en cada bucle es idéntico. Mostraría lo que he intentado, pero ni siquiera puedo entender qué intentar.
<?
if ($xml->entry) {
foreach ($xml->entry as $item) {
...
}
else {
foreach ($rss->channel->item as $item) {
...
}
}
davy.ai
Solución para optimizar los bucles
Parece que el autor está teniendo problemas para encontrar una forma de reducir los dos bucles en uno solo. Dado que el código de procesamiento es idéntico en ambos bucles, es posible fusionarlos. Aquí hay un ejemplo utilizando la función
empty
:Al utilizar la función
empty
, el código comprueba si$xml->entry
está definido y no está vacío. Si lo está, establece$items
como$xml->entry
. De lo contrario, establece$items
como$rss->channel->item
. De esta manera, se asegura de que la variable$items
siempre esté definida y contenga las entradas de XML o los elementos de RSS.Con este enfoque, el autor puede eliminar los dos bucles separados y simplemente usar un solo bucle para procesar los elementos.