Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] na [JS]
Forum PHP.pl > Forum > Przedszkole
KsaR
Mam taki kod znaleziony na php.net + troche go przerobiłem:

  1. public function time($rec, $tim=true, $kw=true, $wh=true)
  2. {
  3. $secs = ($tim) ? ($_SERVER['REQUEST_TIME']-$rec):$rec;
  4. $time = array();
  5. $bit = array('y'=>$secs/31556926%12,
  6. 'w'=>$secs/604800%52,
  7. 'd'=>$secs/86400%7,
  8. 'h'=>$secs/3600%24,
  9. 'm'=>$secs/60%60,
  10. 's'=>$secs%60);
  11. foreach ($bit as $k=>$v) if ($v>0) $time[]=$v.$k;
  12. if ($wh) $time = empty($time) ? 'teraz':implode(' ', $time).' temu';
  13. else $time = empty($time) ? 'brak':implode(' ', $time);
  14. return ($kw) ? '['.$time.']':$time;
  15. }


Wiem że kod może być nieczytelny ale prosze o pomoc bo sam nie dam go rady przepisać,
Za słabo znam js więc probowałem strukturalnie ale i tu utknęłem w trakcie przepisywania..

[JAVASCRIPT] pobierz, plaintext
  1. var time = Array();
  2. var secs = (Math.round((new Date).getTime()/1000)-1418298147); //1418298147 czas dla testów
  3. var bit = Array('y'=>secs/31556926%12,'w'=>secs/604800%52,'d'=>secs/86400%7,'h'=>secs/3600%24,'m'=>secs/60%60,'s'=>secs%60);
  4. //tu utknelem... a te dwie linijki najważniejsze...
  5. foreach ($bit as $k=>$v) if ($v>0) $time[]=$v.$k;
  6. $time = empty($time) ? 'teraz':implode(' ', $time).' temu';
  7. //--
  8. document.write(time); //wyswietlenie zmiennej time
[JAVASCRIPT] pobierz, plaintext
sannin
Pętla:
Kod
for (var key in array) {
    console.log(array[key]);
}


Zamiast implode możesz wykorzystać:
Kod
var a = b + ' ' + c;


Co do empty na tablicy:
Kod
if(array.length === 0) {
}
KsaR
Cytat(sannin @ 12.12.2014, 13:41:22 ) *
Pętla:
Kod
for (var key in array) {
    console.log(array[key]);
}


Zamiast implode możesz wykorzystać:
Kod
var a = b + ' ' + c;


Co do empty na tablicy:
Kod
if(array.length === 0) {
}


Jak pisałem pętla ważna, nazwy kluczy bo zawierają nazwy...
Np: 1m 2s temu"
nospor
Cytat
Jak pisałem pętla ważna, nazwy kluczy bo zawierają nazwy...
No to dostales to o co pytasz...
for (var key in array) {

key - zawiera aktualny klucz
array[key] - zawiera aktualną wartosc
KsaR
Dziękuje wam za pomoc!
Przed chwilą chwile usiadłem nad tym i tak ukończyłem mój pierwszy skrypt javascript (+z waszą pomocą) smile.gif.

[JAVASCRIPT] pobierz, plaintext
  1. var recently=1418298147;
  2. var secs = (Math.round((new Date).getTime()/1000)-recently);
  3. var bitV = new Array(secs/31556926%12,secs/604800%52,secs/86400%7,secs/3600%24,secs/60%60,secs%60);
  4. var bitK = new Array('y','w','d','h','m','s');
  5. var time='';
  6. for (var k in bitV)
  7. {
  8. var val = Math.round(bitV[k]);
  9. if (val>0) time+=val+bitK[k]+' ';
  10. }
  11. (time.length===0) ? time='teraz':time+=' temu';
  12. document.write('('+time+')');
[JAVASCRIPT] pobierz, plaintext
owca_82
Cytat(sannin @ 12.12.2014, 13:41:22 ) *
Pętla:
Kod
for (var key in array) {
    console.log(array[key]);
}


Radzę nie stosować takiej pętli do tablic, bo potem mogą wyjść niezłe jaja które bardzo ciężko wykryć wink.gif
Lepsza będzie zwykła pętla for...
sannin
Cytat(owca_82 @ 12.12.2014, 18:14:00 ) *
Radzę nie stosować takiej pętli do tablic, bo potem mogą wyjść niezłe jaja które bardzo ciężko wykryć wink.gif
Lepsza będzie zwykła pętla for...


Z ciekawości, jakiś przykład? Na pewno jest wolniejsza niż zwykły for.
nospor
@owca po pierwsze autor na początku miał tablicę indeksowaną tekstowo a nie liczbowo po kolei, wiec zwykly FOR tu by się nie zdal.
Po drugie uzywam tego rozwiązania od wielu lat i nigdy zaden kwiatek czy jajo mi nie wyszlo
owca_82
Cytat(nospor @ 12.12.2014, 22:11:10 ) *
@owca po pierwsze autor na początku miał tablicę indeksowaną tekstowo a nie liczbowo po kolei, wiec zwykly FOR tu by się nie zdal.


Masz rację nie dokładnie popatrzyłem sobie na przykład i nie zauważyłem że to "tablica asocjacyjna".

Używasz tego i nic się nie stało bo wiesz co robisz, ale taki mało doświadczony programier w js może chcieć iterować tak przez "wszystkie tablice" szczególnie jak się ma przyzwyczajenia z innych języków
a potem mogą wyjść z tego np. takie kwiatki: http://jsfiddle.net/h3t1bvn8/1/




nospor
Prosze Cie... rownie dobrze by obalic Twoja teze moge zrobic:

//gdzies w kodzie
tablicaQnt = 300;
i ojc, twoj kod bedzie mial zonka...
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.