Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Pętla czy array_map?
Forum PHP.pl > Forum > PHP
LamaMASTER
Jak zwykle moje pytanie związane z prędkością smile.gif
Co szybsze:
1.
  1. <?php
  2. function add($tag)
  3. {
  4. return 'hehe'.$tag.'test';
  5. }
  6. $tablica = array('lol', 'bol');
  7. $tablica = array_map('add', $tablica);
  8. ?>

2.
  1. <?php
  2. for ($i = 0, $n = count($array); $i < $n; $i++) {
  3. $array[$j] = 'hehe'.$array[$i].'test';
  4. }
  5. ?>

Dotychczas używałem pętli. Chodzi mi głównie o takie rozwiązanie na dużych tablicach. Wydaje mi się, że array_map będzie szybsze (bo to funkcja php), ale trzeba tworzyć dodatkową funkcję add i na dodatek obawiam się, że array_map też będzie używać takiej pętli.
Jak sprawdzić co jest szybsze? A może odpowiedź jest oczywista?
Drugie pytanie. Mam tablicę:
  1. <?php
  2. $array = array(
  3. 'lol' => 'bol',
  4. 'lul' => 'srul',
  5. );
  6. ?>

i mogę używać $array['lol'] i $array['lul']. Ale co będzie, jeśli chciałbym użyć $array[0] i wyświetlić "bol"? Nic, bo nie ma takiej pozycji w tablicy. Jest jakaś funkcja, która mi doda do tablicy jeszcze raz te dane, żeby było po kolei:
0 => 'bol',
1 => 'srul',
a efekt był taki:
  1. <?php
  2. 'lol' => 'bol',
  3. 'lul' => 'srul',
  4. 0 => 'bol',
  5. 1 => 'strul',
  6. )
  7. ?>

niezależnie od długości tablicy?
Ludvik
Ad 1. Przetestuj to sam, masz microtime w php... 5 minut pisania i rozwiążesz swój problem.
Ad 2. A da się to zrobić prosto:
  1. <?php
  2. $array = array(
  3. 'lol' => 'bol',
  4. 'lul' => 'srul',
  5. );
  6.  
  7. $array = array_merge($array, array_values($array));
  8. ?>

Mam nadzieję, że kolejności nie pozmienia.
LamaMASTER
array_values - to jest to!
Wielkie dzięki.

Co do przykładu 1 - ok, zmierzę sobie, ale chodzi mi o to po prostu czy nie widać przypadkiem gołym okiem co szybsze smile.gif

Zmierzyłem sobie. Okazuje się, że array_map z funkcjami jest szybsze od pętli. Na tablicy:
  1. <?php
  2. $array = array(
  3. 'lol',
  4. 'bol',
  5. 'kul',
  6. 'lul',
  7. 'lol',
  8. 'bol',
  9. 'kul',
  10. 'lul',
  11. 'lol',
  12. 'bol',
  13. 'kul',
  14. 'lul',
  15. 'lol',
  16. 'bol',
  17. 'kul',
  18. 'lul',
  19. 'lol',
  20. 'bol',
  21. 'kul',
  22. 'lul',
  23. 'lol',
  24. 'bol',
  25. 'kul',
  26. 'lul',
  27. );
  28. ?>

Prędkość wykonania 2 razy array_map (dwie funkcje, które dodawały co innego do wszystkich elementów):
0.0013279914856
Prędkość wykonania 2 razy tej pętli (każda pętla dodawała do wszystkich elementów co innego):
0.00270891189575
Jak widać funkcje php są szybsze niż rozwiązania zastępcze smile.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.