Duda sobre juntar foreach()

  • Autor Autor Lopezito
  • Fecha de inicio Fecha de inicio
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:

Insertar CODE, HTML o 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.
 
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í:

Insertar CODE, HTML o 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/>

Insertar CODE, HTML o 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 edición:
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í:

Insertar CODE, HTML o 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/>

Insertar CODE, HTML o 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.
 
Atrás
Arriba