Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.
Witam
Próbuję sobie napisać skrypt, który będzie mi przeliczał Bajty na MegaBajty i wyżej.
funkcje converter_divisor działa dobrze
var_dump($helper);
osiąga takie wartości jakie powinien, ale po zwróceniu tej zmiennej
$worth=converter_divisor($value, 0);
nie jest ona przypisywana do zmiennej $worth.
Poniżej cały skrypt, jeżeli mógłby ktoś zerknąć i podpowiedzieć mi, co robię nie tak to byłbym wdzięczny.
<?php echo "start"; echo converter(1234567890)."<br/>"; echo "stop"; function converter($value){ $unit=array('B','KB','MB','GB','TB'); $worth=converter_divisor($value, 0); var_dump($worth); } function converter_divisor($value, $sentinel){ while(($value/1024)>1) { converter_divisor(($value/1024),($sentinel+1)); $helper=array($value,$sentinel); return $helper; } echo $value." ".$sentinel."<br/>"; $helper=array($value,$sentinel); var_dump($helper); return $helper; } ?>
Offline
Taki wynik Ciebie interesuje?
start 1.1497809458524 3 array(2) { [0]=> float(1.1497809458524) [1]=> int(3) } WORTH = array(2) { [0]=> int(1234567890) [1]=> int(0) } stop
Offline
Tą wartość próbuję zwrócić:
1.1497809458524 3[/quote]
niestety, jak zauważyłeś do worth przypisuje mi całkiem, co innego i nie rozumiem dlaczego.
W kolejnym kroku będę próbował zaokrąglić tą liczbę do 2 miejsc po przecinku.
var_dumpy - są po to, żebym widział, co się dzieje.
docelowo ich nie będzie.
będę zwracał wynik w postaciKod:
return $worth[0].$unit[$worth[1]];Ostatnio edytowany przez Paad (2012-09-26 21:22:08)
[url=http://www.luckysaloon.pl/]pub Częstochowa[/url] | [url=http://nova-it.eu]strony www[/url]
Offline
To błąd logiczny. Należy zmienić funkcję, aby była pewność, że zwraca wartość we właściwym miejscu.
http://ideone.com/lGzUF
ps. dziwna języka ta php ;)
ps2. Jeśli nie chcesz mieć takich problemów to zainstaluj sobie jakieś środowisko do deweloperki w php z debuggerem. wszelakie var_dumpy są dobre, ale do "kilkulinijkowców".
Ostatnio edytowany przez czadman (2012-09-27 09:04:46)
Offline
Hmmmm.... funkcja [u]converter[/u] wywołuje funkcję [u]converter_divisor[/u].
W funkcji [u]converter_divisor[/u] jest użyte [b]return[/b].
Ale w funkcji [u]converter[/u] już nie, masz tylko proste przypisanie do zmiennej worth i powrót.
Spróbuj dać tak:
function converter($value){ $unit=array('B','KB','MB','GB','TB'); $worth=converter_divisor($value, 0); var_dump($worth); return $worth; }
bo rozumiem, że w $worth jest to co ma być zwrócone?
A tak to chyba zmienna $worth jest lokalnie modyfikowana ale na poziomie głównym jest niewidoczna/niezmieniona.
Przepraszam, jeśli bredzę...
TheAnt
Offline
[quote=TheAnt]Hmmmm.... funkcja [u]converter[/u] wywołuje funkcję [u]converter_divisor[/u].
W funkcji [u]converter_divisor[/u] jest użyte [b]return[/b].
Ale w funkcji [u]converter[/u] już nie, masz tylko proste przypisanie do zmiennej worth i powrót.
[...][/quote]
Nie zwracam [u]$worth[/u] w funkcji [u]converter[/u], bo funkcja [u]converter_divisor[/u] przypisuje mi do [u]$worth[/u], błędny wynik (widzę to już po var_dump).
a jak już będę zwracał to tak jak pisałem wyżej
return $worth[0].$unit[$worth[1]];[/quote]
Dzięki [b]czadman[/b] zaraz pomyślę - uparłem się, żeby zrobić to rekurencyjnie i chyba niepotrzebnie ;) ale próbuję dalej.
[url=http://www.luckysaloon.pl/]pub Częstochowa[/url] | [url=http://nova-it.eu]strony www[/url]
Offline
Time (s) | Query |
---|---|
0.00011 | SET CHARSET latin2 |
0.00008 | SET NAMES latin2 |
0.00104 | SELECT u.*, g.*, o.logged FROM punbb_users AS u INNER JOIN punbb_groups AS g ON u.group_id=g.g_id LEFT JOIN punbb_online AS o ON o.ident='3.138.175.166' WHERE u.id=1 |
0.00350 | REPLACE INTO punbb_online (user_id, ident, logged) VALUES(1, '3.138.175.166', 1732758612) |
0.00032 | SELECT * FROM punbb_online WHERE logged<1732758312 |
0.00060 | SELECT topic_id FROM punbb_posts WHERE id=211910 |
0.00022 | SELECT id FROM punbb_posts WHERE topic_id=22052 ORDER BY posted |
0.00069 | SELECT t.subject, t.closed, t.num_replies, t.sticky, f.id AS forum_id, f.forum_name, f.moderators, fp.post_replies, 0 FROM punbb_topics AS t INNER JOIN punbb_forums AS f ON f.id=t.forum_id LEFT JOIN punbb_forum_perms AS fp ON (fp.forum_id=f.id AND fp.group_id=3) WHERE (fp.read_forum IS NULL OR fp.read_forum=1) AND t.id=22052 AND t.moved_to IS NULL |
0.00056 | SELECT search_for, replace_with FROM punbb_censoring |
0.00365 | SELECT u.email, u.title, u.url, u.location, u.use_avatar, u.signature, u.email_setting, u.num_posts, u.registered, u.admin_note, p.id, p.poster AS username, p.poster_id, p.poster_ip, p.poster_email, p.message, p.hide_smilies, p.posted, p.edited, p.edited_by, g.g_id, g.g_user_title, o.user_id AS is_online FROM punbb_posts AS p INNER JOIN punbb_users AS u ON u.id=p.poster_id INNER JOIN punbb_groups AS g ON g.g_id=u.group_id LEFT JOIN punbb_online AS o ON (o.user_id=u.id AND o.user_id!=1 AND o.idle=0) WHERE p.topic_id=22052 ORDER BY p.id LIMIT 0,25 |
0.00111 | UPDATE punbb_topics SET num_views=num_views+1 WHERE id=22052 |
Total query time: 0.01188 s |