Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] kto pomoże z tablicami?
Forum PHP.pl > Forum > Przedszkole
-Srebrny-
nie mam pojęcia jak nazwać ten wątek, za co przepraszam smile.gif

ale o so hozi? już tłumaczę. mam tablice:
(powiedzmy, że są to gracze, którzy mają takie żetony z numerkami)
Kod
$a = array(1, 24, 35, 46, 57, 68, 79, 90, 101, 112, 123, 134);
$b = array(2, 13, 36, 47, 58, 69, 80, 91, 102, 113, 124, 135);
$c = array(3, 14, 25, 48, 59, 70, 81, 92, 103, 114, 125, 136);
$d = array(4, 15, 26, 37, 60, 71, 82, 93, 104, 115, 126, 137);
$e = array(5, 16, 27, 38, 49, 72, 83, 94, 105, 116, 127, 138);
$f = array(6, 17, 28, 39, 50, 61, 84, 95, 106, 117, 128, 139);
$g = array(7, 18, 29, 40, 51, 62, 73, 96, 107, 118, 129, 140);
$h = array(8, 19, 30, 41, 52, 63, 74, 85, 108, 119, 130, 141);
$x = array(9, 20, 31, 42, 53, 64, 75, 86, 97, 120, 131, 142);
$j = array(10, 21, 32, 43, 54, 65, 76, 87, 98, 109, 132, 143);
$k = array(11, 22, 33, 44, 55, 66, 77, 88, 99, 110, 121, 144);
$l = array(12, 23, 34, 45, 56, 67, 78, 89, 100, 111, 122, 133);


następnie mieszam żetony:
Kod
shuffle($a);
shuffle($b);
shuffle($c);
shuffle($d);
shuffle($e);
shuffle($f);
shuffle($g);
shuffle($h);
shuffle($x);
shuffle($j);
shuffle($k);
shuffle($l);


potem robię pętlę, żeby je wyświetlić:
Kod
for ($i=0; $i < 12; $i++) {
          echo '<tr>
                  <td>'.($i+1).'.</td>
                  <td>'.$a[$i].'</td>
                  <td>'.$b[$i].'</td>
                  <td>'.$c[$i].'</td>
                  <td>'.$d[$i].'</td>
                  <td>'.$e[$i].'</td>
                  <td>'.$f[$i].'</td>
                  <td>'.$g[$i].'</td>
                  <td>'.$h[$i].'</td>
                  <td>'.$x[$i].'</td>
                  <td>'.$j[$i].'</td>
                  <td>'.$k[$i].'</td>
                  <td>'.$l[$i].'</td>
                </tr>';
}


tylko teraz potrzebuję tak:
- w każdym kroku pętli ustawić je w kolejności od najmniejszej do największej
- zliczyć ile razy dany gracz był pierwszy, drugi, trzeci... itd.

i nie bardzo wiem jak do tego podejść smile.gif proszę o naprowadzenie mnie lub wskazanie jak to inaczej zrobić.
sajegib
zarejestruj się jeśli szukasz pomocy

od najmniejszej do najwiekszej - tworzysz dodatkowa tablice przed deklaracja pętli, potem w petli uzupelniasz ja uzywajac operatora " [] "
zliczyc ile razy byl pierwszy itd - tworzysz zmienna np. z nazwa usera i robisz $zmienna++ jesli byl 1., 2. itd...
BigPig
  1. for ($i=0; $i < 12; $i++) {
  2. $tablica_suma = array($a[$i],$b[$i],$c[$i],$d[$i],$e[$i],$f[$i],$g[$i],$h[$i],$x[$i],$j[$i],$k[$i],$l[$i]);
  3. sort($tablica_suma);
  4. echo($i+1)."<br />";
  5. foreach($tablica_suma as $val)
  6. {
  7. echo $val."<br />";
  8. }
  9.  
  10. echo "Koniec tury.<br /><br />";
  11.  
  12. }



I da Ci w kolejności. Już tam to sobie pouzupełniasz tak by było <td> i <tr>, ja już się z tym nie bawiłem.
Z userami to bym napisał, ale muszę wychodzić. Zrobiłbym coś w stylu, żeby oznaczyć usera i za każdym razem, gdy wystapi zwiększać inkementacją zmienną i potem też sortem wszystko wypakowac.
-Srebrny-
do tego doszedłem (wersja uproszczona):
Kod
<?php

// zestawy żetonów
$zes_a = array(1, 8, 11, 14);
$zes_b = array(2, 5, 12, 15);
$zes_c = array(3, 6, 9, 16);
$zes_d = array(4, 7, 10, 13);

// gracz A - miejsca
$A1 = 0;
$A2 = 0;
$A3 = 0;
$A4 = 0;

// gracz B - miejsca
$B1 = 0;
$B2 = 0;
$B3 = 0;
$B4 = 0;

// gracz C - miejsca
$C1 = 0;
$C2 = 0;
$C3 = 0;
$C4 = 0;

// gracz D - miejsca
$D1 = 0;
$D2 = 0;
$D3 = 0;
$D4 = 0;

// mieszanie żetonów
shuffle($zes_a);
shuffle($zes_b);
shuffle($zes_c);
shuffle($zes_d);

for ($i = 0; $i < 4; $i++){
    $tablica = array($zes_a[$i], $zes_b[$i], $zes_c[$i], $zes_d[$i]); // każdy z graczy pokazuje jeden dowolny żeton
    sort($tablica); // sortujemy żetony

    // wyświetla jaki gracz pokazał jaki żeton
    echo '<b>wyscig '.($i+1).'</b><br>';
    if($tablica[0] == $zes_a[$i]) echo 'A - '.$zes_a[$i].'<br />';
    if($tablica[0] == $zes_b[$i]) echo 'B - '.$zes_b[$i].'<br />';
    if($tablica[0] == $zes_c[$i]) echo 'C - '.$zes_c[$i].'<br />';
    if($tablica[0] == $zes_d[$i]) echo 'D - '.$zes_d[$i].'<br />';

    if($tablica[1] == $zes_a[$i]) echo 'A - '.$zes_a[$i].'<br />';
    if($tablica[1] == $zes_b[$i]) echo 'B - '.$zes_b[$i].'<br />';
    if($tablica[1] == $zes_c[$i]) echo 'C - '.$zes_c[$i].'<br />';
    if($tablica[1] == $zes_d[$i]) echo 'D - '.$zes_d[$i].'<br />';

    if($tablica[2] == $zes_a[$i]) echo 'A - '.$zes_a[$i].'<br />';
    if($tablica[2] == $zes_b[$i]) echo 'B - '.$zes_b[$i].'<br />';
    if($tablica[2] == $zes_c[$i]) echo 'C - '.$zes_c[$i].'<br />';
    if($tablica[2] == $zes_d[$i]) echo 'D - '.$zes_d[$i].'<br />';

    if($tablica[3] == $zes_a[$i]) echo 'A - '.$zes_a[$i].'<br />';
    if($tablica[3] == $zes_b[$i]) echo 'B - '.$zes_b[$i].'<br />';
    if($tablica[3] == $zes_c[$i]) echo 'C - '.$zes_c[$i].'<br />';
    if($tablica[3] == $zes_d[$i]) echo 'D - '.$zes_d[$i].'<br />';
    echo '<b>Koniec wyscigu.</b><hr />';

    // liczymy na którym miejscu był gracz w każdym z wyścigów
    if($tablica[0] == 1 or $tablica[0] == 8 or $tablica[0] == 11 or $tablica[0] == 14) $A1 += 1;
    if($tablica[1] == 1 or $tablica[1] == 8 or $tablica[1] == 11 or $tablica[1] == 14) $A2 += 1;
    if($tablica[2] == 1 or $tablica[2] == 8 or $tablica[2] == 11 or $tablica[2] == 14) $A3 += 1;
    if($tablica[3] == 1 or $tablica[3] == 8 or $tablica[3] == 11 or $tablica[3] == 14) $A4 += 1;

    if($tablica[0] == 2 or $tablica[0] == 5 or $tablica[0] == 12 or $tablica[0] == 15) $B1 += 1;
    if($tablica[1] == 2 or $tablica[1] == 5 or $tablica[1] == 12 or $tablica[1] == 15) $B2 += 1;
    if($tablica[2] == 2 or $tablica[2] == 5 or $tablica[2] == 12 or $tablica[2] == 15) $B3 += 1;
    if($tablica[3] == 2 or $tablica[3] == 5 or $tablica[3] == 12 or $tablica[3] == 15) $B4 += 1;

    if($tablica[0] == 3 or $tablica[0] == 6 or $tablica[0] == 9 or $tablica[0] == 16) $C1 += 1;
    if($tablica[1] == 3 or $tablica[1] == 6 or $tablica[1] == 9 or $tablica[1] == 16) $C2 += 1;
    if($tablica[2] == 3 or $tablica[2] == 6 or $tablica[2] == 9 or $tablica[2] == 16) $C3 += 1;
    if($tablica[3] == 3 or $tablica[3] == 6 or $tablica[3] == 9 or $tablica[3] == 16) $C4 += 1;

    if($tablica[0] == 4 or $tablica[0] == 7 or $tablica[0] == 10 or $tablica[0] == 13) $D1 += 1;
    if($tablica[1] == 4 or $tablica[1] == 7 or $tablica[1] == 10 or $tablica[1] == 13) $D2 += 1;
    if($tablica[2] == 4 or $tablica[2] == 7 or $tablica[2] == 10 or $tablica[2] == 13) $D3 += 1;
    if($tablica[3] == 4 or $tablica[3] == 7 or $tablica[3] == 10 or $tablica[3] == 13) $D4 += 1;
}

// wyświetlanie wyników
echo '<table border = "1">';
echo '<tr>';
echo '<th>miejsce</th>';
echo '<th>GRACZ A</th>';
echo '<th>GRACZ B</th>';
echo '<th>GRACZ C</th>';
echo '<th>GRACZ D</th>';
echo '</tr><tr>';
echo '<th>1.</th>';
echo '<td>'.$A1.'</td>';
echo '<td>'.$B1.'</td>';
echo '<td>'.$C1.'</td>';
echo '<td>'.$D1.'</td>';
echo '</tr><tr>';
echo '<th>2.</th>';
echo '<td>'.$A2.'</td>';
echo '<td>'.$B2.'</td>';
echo '<td>'.$C2.'</td>';
echo '<td>'.$D2.'</td>';
echo '</tr><tr>';
echo '<th>3.</th>';
echo '<td>'.$A3.'</td>';
echo '<td>'.$B3.'</td>';
echo '<td>'.$C3.'</td>';
echo '<td>'.$D3.'</td>';
echo '</tr><tr>';
echo '<th>4.</th>';
echo '<td>'.$A4.'</td>';
echo '<td>'.$B4.'</td>';
echo '<td>'.$C4.'</td>';
echo '<td>'.$D4.'</td>';
echo '</tr>';
echo '</table>';

?>


da się to jakoś lepiej zrobić? tzn. na pewno się da smile.gif tylko ja jeszcze nie wiem jak.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.