Foros del Web » Programando para Internet » PHP »

Conjugar elementos de un array

Estas en el tema de Conjugar elementos de un array en el foro de PHP en Foros del Web. Buenas noches, tengo una enorme duda y no tengo ni idea de como buscarlo en san google, :P. Quiero hacer un programa que me ayude ...
  #1 (permalink)  
Antiguo 21/07/2011, 19:31
Avatar de yeudiel  
Fecha de Ingreso: abril-2008
Ubicación: Ciudad de México
Mensajes: 78
Antigüedad: 16 años
Puntos: 1
Pregunta Conjugar elementos de un array

Buenas noches, tengo una enorme duda y no tengo ni idea de como buscarlo en san google, :P. Quiero hacer un programa que me ayude a generar los roles de futbol, son de futbol rapido y tienen que jugar todos con todos, es decir de un array donde tengo a, b, c y d tengo que hacer parejas como estas
a vs b
a vs c
a vs d
b vs c
b vs d
c vs d

La cantidad de elementos es variable.

Una ayudadita me caeria re bien.

De antemano saludos
  #2 (permalink)  
Antiguo 22/07/2011, 01:02
Avatar de repara2  
Fecha de Ingreso: septiembre-2010
Ubicación: München
Mensajes: 2.445
Antigüedad: 13 años, 7 meses
Puntos: 331
Respuesta: Conjugar elementos de un array

A ver si sirve:

Código PHP:
Ver original
  1. <?php
  2.  
  3. ini_set("display_errors", 1);
  4.  
  5. ////SIN GRUPOS
  6. $equipos = array(0 => "Deportivo Cambaceres", 1 => "Atlético Cachufla", 2 => "Defensores de Saavedra", 3 => "Ratis Junior");
  7. $fixture = array();
  8. foreach ($equipos as $key => $value) {
  9.     foreach ($equipos as $key2 => $value2) {
  10.         if($key!=$key2 && ( !array_key_exists($key.$key2, $fixture) && !array_key_exists($key2.$key, $fixture)) )
  11.         $fixture[$key.$key2] = $value." vs. ".$value2;
  12.     }
  13. }
  14. echo "<h3>Fixture</h3><pre>";
  15. print_r($fixture);
  16. echo "</pre>";
  17. ///<<<<<<<<<<<<<<<<< CON GRUPOS
  18. $grupoA = array(0 => "Deportivo Cambaceres", 1 => "Atlético Cachufla", 2 => "Defensores de Saavedra", 3 => "Ratis Junior");
  19. $grupoB = array(0 => "C.A.D.P", 1 => "Mortadela 2", 2 => "Tres Arroyos", 3 => "San Blas");
  20.  
  21. echo "<h3>Grupos</h3><pre>";
  22. print_r($grupoA);
  23. print_r($grupoB);
  24. echo "</pre>";
  25.  
  26. $fixture = array();
  27. foreach ($grupoA as $a => $equipoA) {
  28.     foreach ($grupoB as $b => $equipoB) {
  29.         $fixture[$a.$b] = $equipoA." vs ".$equipoB;
  30.     }
  31. }
  32. echo "<h3>Fixture</h3><pre>";
  33. print_r($fixture);
  34. echo "</pre>";
  35. ?>
__________________
Fere libenter homines, id quod volunt, credunt.
  #3 (permalink)  
Antiguo 22/07/2011, 01:10
Avatar de blakmetall  
Fecha de Ingreso: diciembre-2010
Ubicación: Jalisco
Mensajes: 181
Antigüedad: 13 años, 4 meses
Puntos: 18
Respuesta: Conjugar elementos de un array

Código PHP:
<?php
     
function prepararPartidos($teams){
        
$cantidad count($teams);
    
        
$output "";
        for(
$i 0$i $cantidad$i++){
            for(
$j $i 1$j $cantidad$j++){
               
$output .= $equipos[$i] . " vs " $equipos[$j] . "<br />";
            }
        }
        return 
$output;
    }

    
$equipos = array("a","b","c","d","e");
    echo 
prepararPartidos($equipos);
?>
Mira te dejo este codigo, solo seria necesario agregar los equipos dentro del array
equipos.

y se genera el codigo siguiente segun este ejemplo:

a vs b<br />a vs c<br />a vs d<br />a vs e<br />b vs c<br />b vs d<br />b vs e<br />c vs d<br />c vs e<br />d vs e<br />...

Última edición por blakmetall; 22/07/2011 a las 01:17
  #4 (permalink)  
Antiguo 22/07/2011, 13:24
Avatar de yeudiel  
Fecha de Ingreso: abril-2008
Ubicación: Ciudad de México
Mensajes: 78
Antigüedad: 16 años
Puntos: 1
Respuesta: Conjugar elementos de un array

Agradezco muchísimo sus respuestas, sobre todo la de repara2, que en este caso fue la mas acertada y completa. Muchas gracias ;). Tema resuelto

Etiquetas: combinar, conjugar, elementos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:59.