Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Tablica wielowymiarowa-losowy klucz z 2 wymiaru
Forum PHP.pl > Forum > Przedszkole
meron11
Mam tablicę którą chcę wyświetlić(część):
Cytat
Array
(
[0] => Array
(
[0] => alegratka samochody

)

[1] => Array
(
[0] => alegro motoryzacja

[1] => alegro pl samochody osobowe

[2] => alegro samochody

[3] => alegro samochody czesci

[4] => alegro samochody osobowe

[5] => alegro samochody osobowe u¿ywane

[6] => alegro.pl motoryzacja

)



I o to chodzi że jeżeli mam np taki wymiar że jest jedno pole to je wyświetli, a kilka(tak jak w drugiej "podtablicy") wybrało losowe z tej listy i je wyświetliło. czyli np przy pierwszym przepuszczeniu w wyniku chcę dostać (z tego kawałka):

alegratka samochody

alegro samochody czesci
peter13135
zrób z tego jedną tablicę za pomocą array_merge i losuj za pomocą array_rand
meron11
tylko że takich podtablic mam kilkaset z podobną treścią i nie mogę ich połaczyć, musze z każdej podtablicy losować wink.gif

większa próbka:
Cytat
Array
(
[0] => Array
(
[0] => alegratka samochody

)

[1] => Array
(
[0] => alegro motoryzacja

[1] => alegro pl samochody osobowe

[2] => alegro samochody

[3] => alegro samochody czesci

[4] => alegro samochody osobowe

[5] => alegro samochody osobowe u?ywane

[6] => alegro.pl motoryzacja

)
[59] => Array
(
[0] => cennik drzwi wewn?trznych

[1] => cennik okien

[2] => cennik okien pcv

[3] => cennik okien plastikowych

)


[92] => Array
(
[0] => komputer stacjonarny

[1] => komputer

)


I z każdego zestawiku trzeba po jednym wylosować wink.gif
peter13135
Zakładam że ta Twoja tablica to $in
  1.  
  2. $out =array();
  3.  
  4. while(count($array)<2)//ta dwójka to liczba elementów które chcesz wylosować
  5. {
  6. $a=array_rand($in)//to zwraca losową tablicę jednowymiarową
  7. $b = array_rand($a);//to zwraca element (string) z tablicy przed chwilą uzyskanej
  8. if(!in_array($b,$out))//sprawdza czy element został już dodany do tablicy
  9. $out[]=$b;//dodaje element do tablicy
  10.  
  11. }
  12.  


Wadą tego rozwiązania jest to, że prawdopodobieństwo wystąpienia elementu np. alegro samochody jest 7 razy mniejsze niż alegratka samochody.

Nie wiem co za problem masz w scaleniu tablicy.
meron11
Źle!

NIe czytasz co ja piszę.... Ja mam to w jednej tablicy wielowymiarowej i struktura jej jest taka:

Tablica:

[1(klucz pierwszy)]
(
(w nim kilka opcjii albo jedna)
[0] => komputer stacjonarny

[1] => komputer

)

I tak kilkaset razy różnych bloków.

CHodzi o to żeby z każdego takiego bloku wylosować jedną wartość i ją zapisać do nowej tablicy/wyprintować.
A twój skrypt tego nie robi wink.gif
peter13135
  1. $out =array();
  2.  
  3. foreach($in as $element)
  4. {
  5. $out[]=array_rand($element);//zamiast tego możesz od razu dać echo.
  6. }
meron11
na wyjściu otrzymałęm indexy a nie wartości ;/

http://wklej.org/id/573961/
peter13135
Racja, wybacz wink.gif
$out[]= $element[array_rand($element,1)];
meron11
Dziękuję, dobranoc, close wink.gif
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.