Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: skrypt losujący wpisz z pliku
Forum PHP.pl > Forum > PHP
furman12
Witam,
Piszę skrypt który ma losować 5 wpisów z pliku niestety nie mogę sobie poradzić z wyczytywaniem danych. Jak na razie napisałem coś takiego, ale nie działa:
  1. <?php
  2. // wczytanie zawartości pliku do tablicy
  3. $file = file("baza.txt");
  4. // przechodzimy przez tablicę za pomocą pętli foreach
  5. foreach($file as $value) {
  6. // rozbijamy poszczególne linie na części
  7. $exp = explode("*",$value);
  8. }
  9. for( $x = 0, $cnt = count($exp); $x < $cnt; $x++ ) { // Pętla wyświetlająca
  10.  
  11. $wpisy = array ($exp[$x]);
  12. }
  13. ?>
  14. <?php
  15. srand((float) microtime() * 10000000);
  16.  
  17. $losowe_wpisy = array_rand ($wpisy, 5);
  18. echo $wpisy[$losowe_wpisy[0]] . "\n";
  19. echo $wpisy[$losowe_wpisy[1]] . "\n";
  20. echo $wpisy[$losowe_wpisy[2]] . "\n";
  21. echo $wpisy[$losowe_wpisy[3]] . "\n";
  22. echo $wpisy[$losowe_wpisy[4]] . "\n";
  23. ?>

Ktoś mógłby mi pomóc z tym? Nie potrafię poprawnie sformułować arraya z lini 11

Sorki 1 "z" za dużo w tytule tematu.
piotrooo89
pokaż jak wyglądają dane w pliku z którego pobierasz dane.
furman12
Kod
test1*test2*test3*test4*test5*test7*test8*

Przy normalnym wyświetlaniu wszystko ok ale ja chce losować.
piotrooo89
rozumiem że dane masz podawane ciągiem w jednej linii?

jak tak to wczytujesz za pomocą file_get_contents i na wyniku używasz explode dostajesz tablice poszczególnych danych na których stosujesz array_rand i jako drugi argument podajesz 5.
furman12
dobże rozumiesz

Zrobiłem tak i dalej lipa
  1. <?php
  2. // wczytanie zawartości pliku do tablicy
  3. $file = file("baza.txt");
  4. // przechodzimy przez tablicę za pomocą pętli foreach
  5. foreach($file as $value) {
  6. // rozbijamy poszczególne linie na części
  7. $exp = explode("*",$value);
  8. }
  9. for( $x = 0, $cnt = count($exp); $x < $cnt; $x++ ) { // Pętla wyświetlająca
  10. }
  11. ?>
  12. <?php
  13. srand((float) microtime() * 10000000);
  14.  
  15. $losowe_wpisy = array_rand ($exp[$x], 5);
  16. echo $wpisy[$losowe_wpisy[0]] . "\n";
  17. echo $wpisy[$losowe_wpisy[1]] . "\n";
  18. echo $wpisy[$losowe_wpisy[2]] . "\n";
  19. echo $wpisy[$losowe_wpisy[3]] . "\n";
  20. echo $wpisy[$losowe_wpisy[4]] . "\n";
  21. ?>
Blame
Tylko nie rozumiem dwóch rzeczy:
1. Dlaczego zamykasz pętle "wyświetlającą" przed wyświetlaniem?
2. Skąd ci się bierze tablica $wpisy?
furman12
Czyli całkowicie do bani. Juz mi sie skończyły pomysły jak to zrobić.

proszę o pomoc, sam nie dam rady sciana.gif
piotrooo89
wogóle nie zastosowałeś się do mojej rady...

mam dane:
Kod
2*4*5*7*4


  1. $plik = file_get_contents('plik.txt');
  2.  
  3. $tab = explode('*', $plik);
  4.  
  5. srand((float) microtime() * 10000000);
  6.  
  7. $los = array_rand($tab, 5);
  8.  
  9. echo '1: '.$los[0];
  10. echo '2: '.$los[1];
  11. echo '3: '.$los[2];
  12. echo '4: '.$los[3];
  13. echo '5: '.$los[4];
furman12
To nie chce działać. Jak mam wpisy textowe to i tak losuje liczby.
piotrooo89
czytaj manual! array_rand zwraca losowe klucze tablic, nie wartości. jak dasz tak:

  1. $plik = file_get_contents('plik.txt');
  2.  
  3. $tab = explode('*', $plik);
  4.  
  5. srand((float) microtime() * 10000000);
  6.  
  7. $los = array_rand($tab, 5);
  8.  
  9. echo '1: '.$tab[$los[0]].'<br>';
  10. echo '2: '.$tab[$los[1]].'<br>';
  11. echo '3: '.$tab[$los[2]].'<br>';
  12. echo '4: '.$tab[$los[3]].'<br>';
  13. echo '5: '.$tab[$los[4]].'<br>';


powinno być OK.
furman12
Dzięki wszystko już działa
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.