Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]zabawa array
Forum PHP.pl > Forum > Przedszkole
acztery
Witam

mam taki array np.

  1. Array
  2. (
  3. [2239] => Włos
  4. [50] => Zniszczone włosy
  5. [31] => Ph
  6. [21] => Zioła
  7. [7] => Brunetka
  8. [1] => Spray utrwalający
  9. )



on może być rzecz jasna dużo dłuższy.

klucz to wartość z bazy z kolumny "count"

z takie duże tablicy chciałbym wybrać.

1) jeden raz wartość o najwyższym id
2) 2 losowe z reszty

jest jakaś szybka funkcja może?

I drugie mały pytanie żeby nie tworzyć drugiego wątku.

mam takie coś

  1. function str_replace_assoc(array $replace, $subject) {
  2. return str_replace(array_keys($replace), array_values($replace), $subject);
  3. }


Funkcja powyżej przyjmuję array i treść...

funkcja odpowiada za zamienianie słów na inne.
Chciałbym zrobić ograniczenie, że np mamy treść w której występuje słowo test 10 razy.
To ta funkcja zastąpi tylko 1 słowo test które napotka a nie wszystkie....

PS próbuję coś z

array_splice($tag_tmp,0,1);

ale to dalej nie do co chcę do końca..
peter13135
1. na myśl przychodzi mi:

Kod
$max=0;
foreach($tablica as $key=>$value)
  if($key>$max)
    $max = $key;

2.
  1. function str_replace_assoc(array $replace, $subject) {
  2. return str_replace(array_keys($replace), array_values($replace), $subject,1);
  3. }

acztery
peter 2 dzięki
co do 1 miałem tak i przy przy tablicy któŸa ma np 50 tys rekordów lekko to trwa.

a jak w ogole wylosowac 2 elementy z tablicy pomijając 1.
peter13135
array_rand - jako pierwszy parametr tablica kluczy z usuniętym największym elementem, jako drugi liczba 2
przerobić tablicę na klucze możesz za pomocą array_keys
ten element możesz usunąć funkcją array_shift (zakładam, że tablica jest posortowana według kluczy)
czyli, coś w rodzaju

Nie testowałem tego kodu.
mls
Cytat(peter13135 @ 18.07.2011, 20:16:08 ) *
Nie testowałem tego kodu.


To widać. Bo to nie ma prawa zadziałać - dowiedz się najpierw, co zwraca funkcja array_shift...
peter13135
Czepiasz się byle czego. Nigdzie nie jest napisane, że muszę dawać gotowy działający kod, liczy sie sam pomysł/naprowadzenie na dobrą drogę.
Na podstawie kodu chyba widać, że wiem do czego służy ta funkcja, tylko źle ją użyłem ;], poza tym zjadłem jeden argument dla funkcji rand.... no ale, dałem wskazówki podlinkowałem do odpowiednich funkcji - to powinno wystarczyć do rozwiązania problemu.
phpion
  1. $input = array(
  2. 2239 => 'Włos',
  3. 50 => 'Zniszczone włosy',
  4. 31 => 'Ph',
  5. 21 => 'Zioła',
  6. 7 => 'Brunetka',
  7. 1 => 'Spray utrwalający'
  8. );
  9.  
  10. $output = array();
  11.  
  12. krsort($input); // jeśli nie są ustawione malejąco
  13.  
  14. $output[] = array_shift($input); // pobierz i usuń pierwszy element
  15.  
  16. shuffle($input); // przetasuj pozostałe elementy
  17.  
  18. $output = array_merge($output, array_slice($input, 0, 2)); // dołącz 2 pierwsze elementy
  19.  
  20. print_r($output);

Zastanawiam się jednak czy struktura Twojej tablicy jest prawidłowa. Co w przypadku gdy kilka elementów będzie miało tą samą liczbę wystąpień? W skrajnym przypadku otrzymasz 1-elementową tablicę (jeśli wszystkie elementy będą miały tą samą liczbę wystąpień).
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.