Tengo un escenario:

Hay algunos divs que se muestran en función del siguiente bucle:

  <?php foreach($posts->content as $entry) { ?>
   <div><a class="popup-with-zoom-anim wiplay" id="<?=$entry->id?>"
   href="#small-dialog" data-detail-id ="<?=$entry->id?>"
   data-stream="******">content here</a></div>
   <?php } ?>

En el "flujo de datos" href quiero pasar alguna URL de youtube para que cada div muestre una URL aleatoria basada en el bucle for. Probé el siguiente código, pero no funciona, ¿cómo llamaremos a esta función dentro del ciclo?

$assoc_array = array( "url" => "https://www.youtube.com
/watch?v=A7XdOyZIkko", 
        "url" => "https://www.youtube.com/watch?v=dMH0bHeiRNg

  ", 
        "url" => "https://www.youtube.com/watch?v=xEs59zTXu7s", 
        "url" => "https://www.youtube.com/watch?v=tlDAgZO2ZDM
  ");
  function shuffle_assoc_array(&$array) {
  if (!is_array($array)) return $array;
  $keys = array_keys($array);
  shuffle($keys);
  $random = array();
  foreach ($keys as $key)
    $random[$key] = $array[$key];
  $array = $random;   return TRUE;
  }
   shuffle_assoc_array($assoc_array);

¿Cómo puedo pasar esta URL de youtube al azar al bucle for?

0
gitu 13 dic. 2016 a las 11:31

2 respuestas

La mejor respuesta

Como me dijeron, debe tener que cambiar el formato de su matriz y luego probar con el siguiente código.

<?php
   $assoc_array = array( "https://www.youtube.com/watch?v=A7XdOyZIkko", "https://www.youtube.com/watch?v=dMH0bHeiRNg", "https://www.youtube.com/watch?v=xEs59zTXu7s", "https://www.youtube.com/watch?v=tlDAgZO2ZDM");

   shuffle($assoc_array);

   for($i=0;$i<count($assoc_array);$i++){
      echo '<div><a class="popup-with-zoom-anim wiplay" id="'.$i.'" href="#small-dialog" data-detail-id ="'.$i.'" data-stream="'.$assoc_array[$i].'">'.$assoc_array[$i].'</a></div>';
   }
?>
0
Soni Vimalkumar 13 dic. 2016 a las 08:56

Esta matriz le dará solo un valor

array( 
"url" => "https://www.youtube.com
/watch?v=A7XdOyZIkko", 
"url" => "https://www.youtube.com/watch?v=dMH0bHeiRNg", 
"url" => "https://www.youtube.com/watch?v=xEs59zTXu7s", 
"url" => "https://www.youtube.com/watch?v=tlDAgZO2ZDM
");

Esto es equivalente a

array( 
    "url" => "https://www.youtube.com/watch?v=tlDAgZO2ZDM
");

Prueba algo como esto

array( 
"https://www.youtube.com/watch?v=A7XdOyZIkko", 
"https://www.youtube.com/watch?v=dMH0bHeiRNg", 
"https://www.youtube.com/watch?v=xEs59zTXu7s", 
"https://www.youtube.com/watch?v=tlDAgZO2ZDM"
);
0
Ima 13 dic. 2016 a las 08:44