Dúvida sobre juntar foreach()

  • Autor Autor Lopezito
  • Data de início Data de início
Tradução em andamento: em alguns minutos este tópico estará em português. Por enquanto, o conteúdo está no original em espanhol. Ver original
Lopezito

Lopezito

Eta
Diseñador
Verificación en dos pasos activada
Buenas.
Miren, nunca he hecho esto, pero resulta que estoy intentando juntar 2 conjuntos de valores:

PHP:
$urls = get_option('links_urls');
$imgs = get_option('imagenes_url');

$urlsnow = str_replace("\n","<br/>",$urls);
$urlsnow2 = explode(",",$urlsnow);
foreach($urlsnow2 as $u){
echo $u;
}

$imgslinksnow = str_replace("\n","<br/>",$imgs);
$imgslinksnow2 = explode(",",$imgslinksnow);
foreach($imgslinksnow2 as $u){
echo $u;
}

Y no se como juntarlos en 1 para formar:

Inserir CODE, HTML ou PHP:
<a href="url"><img src="url" /></a>

He tratado de intentar varias formas, pero nada, no se me ocurre que hacer.
Para ser más breve y directo: Quisiera juntar los 2 foreach en 1 solo y poder crear la línea de código html.
Desde ya, gracias.
Saludos.
 
Foi útil? Participe da conversa

Com sua conta grátis você pode responder, mandar mensagem privada ao autor e comprar com Saldo retido: o pagamento é liberado quando você recebe o combinado.

Leva 30 segundos · você volta a este tópico ao terminar
PHP:
<?php
    $final = array_combine($urlsnow2, $imgslinksnow2);
    foreach($final as $url => $imgsrc) {
        echo "<a href=\"$url\"><img src=\"$imgsrc\" alt>";
    }
?>

PD: si no vas a volver a usar las variables $urls, $urlsnow, etc sería mejor que el código quedara así:

PHP:
$urls = get_option('links_urls'); 
$imgs = get_option('imagenes_url'); 

// nltobr hace lo mismo que tu str_replace, sólo que así también funcionará en windows.
// si estás en wp podrías considerar incluso usar wpautop.
$urls = nltobr($urls); 
$urls = explode(",",$urls);

$imgs = nltobr($imgs); 
$imgs = explode(",",$imgs);

$final = array_combine($urls, $imgs);
foreach($final as $url => $imgsrc) {
    echo "<a href=\"$url\"><img src=\"$imgsrc\" alt>";
}
 
PHP:
<?php
    $final = array_combine($urlsnow2, $imgslinksnow2);
    foreach($final as $url => $imgsrc) {
        echo "<a href=\"$url\"><img src=\"$imgsrc\" alt>";
    }
?>

PD: si no vas a volver a usar las variables $urls, $urlsnow, etc sería mejor que el código quedara así:

PHP:
$urls = get_option('links_urls'); 
$imgs = get_option('imagenes_url'); 

// nltobr hace lo mismo que tu str_replace, sólo que así también funcionará en windows.
// si estás en wp podrías considerar incluso usar wpautop.
$urls = nltobr($urls); 
$urls = explode(",",$urls);

$imgs = nltobr($imgs); 
$imgs = explode(",",$imgs);

$final = array_combine($urls, $imgs);
foreach($final as $url => $imgsrc) {
    echo "<a href=\"$url\"><img src=\"$imgsrc\" alt>";
}

Gracias por tu tiempo, pero resulta que no encuentra la funcion nltobr: Call to undefined function nltobr()

- - - Actualizado - - -
[MENTION=28190]ecoal95[/MENTION] cambie por nl2br pero me sale así:

Inserir CODE, HTML ou PHP:
<a href="http://lopezito.com/"><img src="http://aux.iconpedia.net/uploads/1359061708.png" alt><a href="<br />
http://lopezito.com/"><img src="<br />
http://aux.iconpedia.net/uploads/1359061708.png" alt><a href="<br />
http://asd.com/"><img src="<br />
http://aux.iconpedia.net/uploads/1359061708.png" alt>

2d1rzoo.png


Me di cuenta que falta </a> pero igual, antes de la url de la imagen me sale <br/>

Inserir CODE, HTML ou PHP:
<a href="http://lopezito.com/"><img src="http://aux.iconpedia.net/uploads/1359061708.png" alt="" /></a><a href="<br />
http://lopezito.com/"><img src="<br />
http://aux.iconpedia.net/uploads/1359061708.png" alt="" /></a><a href="<br />
http://asd.com/"><img src="<br />
http://aux.iconpedia.net/uploads/1359061708.png" alt="" /></a>

----

Vale, le saque el nl2br, creo que no era necesario, pero me toma 3 de las 4, la primera línea no la toma.
 
Última edição:
Gracias por tu tiempo, pero resulta que no encuentra la funcion nltobr: Call to undefined function nltobr()

- - - Actualizado - - -
[MENTION=28190]ecoal95[/MENTION] cambie por nl2br pero me sale así:

Inserir CODE, HTML ou PHP:
<a rel="nofollow" href="http://lopezito.com/"><img src="http://aux.iconpedia.net/uploads/1359061708.png" alt><a href="<br />
http://lopezito.com/"><img src="<br />
http://aux.iconpedia.net/uploads/1359061708.png" alt><a href="<br />
http://asd.com/"><img src="<br />
http://aux.iconpedia.net/uploads/1359061708.png" alt>

2d1rzoo.png


Me di cuenta que falta </a> pero igual, antes de la url de la imagen me sale <br/>

Inserir CODE, HTML ou PHP:
<a rel="nofollow" href="http://lopezito.com/"><img src="http://aux.iconpedia.net/uploads/1359061708.png" alt="" /></a><a href="<br />
http://lopezito.com/"><img src="<br />
http://aux.iconpedia.net/uploads/1359061708.png" alt="" /></a><a href="<br />
http://asd.com/"><img src="<br />
http://aux.iconpedia.net/uploads/1359061708.png" alt="" /></a>

----

Vale, le saque el nl2br, creo que no era necesario, pero me toma 3 de las 4, la primera línea no la toma.

Eso es porque array_combine convierte las urls en la key de la array.

Si una array tiene dos keys iguales (como es el caso con la segunda y la tercera, ya que la primera no la tomará con el carácter \n delante), sólo se queda una de las dos keys.

Vamos, que si usas la misma url varias veces deberías de buscar un código alternativo:

PHP:
$final = array();
foreach($urls as $index => $value) {
    $final[] = array(
        'url' => $value,
        'imgsrc' => $imgs[$index]
    );
}

foreach ($final as $group) {
    echo '<a href="' . $group['url'] . '"><img src="' . $group['imgsrc'] . '" alt></a>';
}
 
Eso es porque array_combine convierte las urls en la key de la array.

Si una array tiene dos keys iguales (como es el caso con la segunda y la tercera, ya que la primera no la tomará con el carácter \n delante), sólo se queda una de las dos keys.

Vamos, que si usas la misma url varias veces deberías de buscar un código alternativo:

PHP:
$final = array();
foreach($urls as $index => $value) {
    $final[] = array(
        'url' => $value,
        'imgsrc' => $imgs[$index]
    );
}

foreach ($final as $group) {
    echo '<a href="' . $group['url'] . '"><img src="' . $group['imgsrc'] . '" alt></a>';
}

Entonces hablas de que cada línea dentro del textarea sea diferente para que se muestren todas? :drunk:
 
Si usaras el primer método se verían bien sólo si todas las urls son distintas, si no tendrías que usar el segundo.
Entonces hablas de que cada línea dentro del textarea sea diferente para que se muestren todas? :drunk:
 
Si usaras el primer método se verían bien sólo si todas las urls son distintas, si no tendrías que usar el segundo.

Vale, se agradece el tiempo y la ayuda :encouragement:
Pueden cerrar.
 
Voltar
Topo