Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] na [JS], przepisanie kodu z php na javascript.
KsaR
post
Post #1





Grupa: Zarejestrowani
Postów: 520
Pomógł: 102
Dołączył: 15.07.2014
Skąd: NULL

Ostrzeżenie: (0%)
-----


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


Ten post edytował Ksar 12.12.2014, 12:43:48
Go to the top of the page
+Quote Post
sannin
post
Post #2





Grupa: Zarejestrowani
Postów: 308
Pomógł: 13
Dołączył: 31.10.2008

Ostrzeżenie: (0%)
-----


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) {
}
Go to the top of the page
+Quote Post
KsaR
post
Post #3





Grupa: Zarejestrowani
Postów: 520
Pomógł: 102
Dołączył: 15.07.2014
Skąd: NULL

Ostrzeżenie: (0%)
-----


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"
Go to the top of the page
+Quote Post
nospor
post
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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
Go to the top of the page
+Quote Post
KsaR
post
Post #5





Grupa: Zarejestrowani
Postów: 520
Pomógł: 102
Dołączył: 15.07.2014
Skąd: NULL

Ostrzeżenie: (0%)
-----


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ą) (IMG:style_emoticons/default/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


Ten post edytował Ksar 12.12.2014, 16:19:33
Go to the top of the page
+Quote Post
owca_82
post
Post #6





Grupa: Zarejestrowani
Postów: 77
Pomógł: 8
Dołączył: 22.04.2012

Ostrzeżenie: (0%)
-----


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ć (IMG:style_emoticons/default/wink.gif)
Lepsza będzie zwykła pętla for...
Go to the top of the page
+Quote Post
sannin
post
Post #7





Grupa: Zarejestrowani
Postów: 308
Pomógł: 13
Dołączył: 31.10.2008

Ostrzeżenie: (0%)
-----


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ć (IMG:style_emoticons/default/wink.gif)
Lepsza będzie zwykła pętla for...


Z ciekawości, jakiś przykład? Na pewno jest wolniejsza niż zwykły for.

Ten post edytował sannin 12.12.2014, 19:21:04
Go to the top of the page
+Quote Post
nospor
post
Post #8





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




@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
Go to the top of the page
+Quote Post
owca_82
post
Post #9





Grupa: Zarejestrowani
Postów: 77
Pomógł: 8
Dołączył: 22.04.2012

Ostrzeżenie: (0%)
-----


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/




Go to the top of the page
+Quote Post
nospor
post
Post #10





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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

//gdzies w kodzie
tablicaQnt = 300;
i ojc, twoj kod bedzie mial zonka...
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.08.2025 - 13:15