Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Mnożenie elementów tablicy przez wartosc, jak to zrobic w jednej linijce
fate
post 2.10.2012, 08:54:05
Post #1





Grupa: Zarejestrowani
Postów: 824
Pomógł: 106
Dołączył: 14.03.2012
Skąd: Warszawa

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


Witam, nie wiem jak to zrobić a nie wierzę że się nie da żeby zamiast wymieniać każdą wartość tablicy i ją mnożyć to przemnożyć całą tablicę razy 100, no i file format też tak zrobić. aarambo.gif

  1. $wyniki_plik = file('sonda.dat');
  2. $suma = array_sum($wyniki_plik);
  3.  
  4. $vote[0] = $wyniki_plik[0]/$suma*100;
  5. $vote[1] = $wyniki_plik[1]/$suma*100;
  6. $vote[2] = $wyniki_plik[2]/$suma*100;
  7. $vote[3] = $wyniki_plik[3]/$suma*100;
  8.  
  9. $vote[0] = number_format($vote[0], 2, '.', '');
  10. $vote[1] = number_format($vote[1], 2, '.', '');
  11. $vote[2] = number_format($vote[2], 2, '.', '');
  12. $vote[3] = number_format($vote[3], 2, '.', '');
  13.  


Próbowałem tak na pocżatku :
  1. $vote = $wyniki_plik/$suma*100;

ale wywala błąd i wypisałem wszytsko businesssmiley.png

czy z $vote muszę jakoś tworzyć też tablicę (nie wiem jak) czy zrobi się z automatu jak będę tablicę mnożył i tylko przy $wyniki_plik trzeba coś dopisać w style get array element ohno-smiley.gif

Proszę o podpowiedź, uczę się nerdsmiley.png


--------------------
Go to the top of the page
+Quote Post
CuteOne
post 2.10.2012, 09:06:50
Post #2





Grupa: Zarejestrowani
Postów: 2 958
Pomógł: 574
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

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


  1. $array = array();
  2. foreach($wynik as $v) {
  3. $array[] = number_format($v * 100, 2, '.', ',');
  4. }
Go to the top of the page
+Quote Post
skowron-line
post 2.10.2012, 09:12:17
Post #3





Grupa: Zarejestrowani
Postów: 4 340
Pomógł: 542
Dołączył: 15.01.2006
Skąd: Olsztyn/Warszawa

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


http://www.php.net/manual/en/function.array-map.php poczytaj o tej funkcji.


--------------------
I'm so fast that last night I turned off the light switch in my hotel room and was in bed before the room was dark - Muhammad Ali.
Peg jeżeli chcesz uprawiać sex to dzieci muszą wyjść, a jeżeli chcesz żeby był dobry ty też musisz wyjść - Al Bundy.

QueryBuilder, Mootools.net, bbcradio1::MistaJam
http://www.phpbench.com/
Go to the top of the page
+Quote Post
fate
post 2.10.2012, 22:23:29
Post #4





Grupa: Zarejestrowani
Postów: 824
Pomógł: 106
Dołączył: 14.03.2012
Skąd: Warszawa

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


poddaje sie juz.. probowalem na tyle sposobow i chyba wroce do wypisania porazka

  1.  
  2. $suma = array_sum($wyniki_plik);
  3. function procent($n)
  4. {
  5. return($n*100);
  6. }
  7.  
  8. $vote = array_map("procent", $wyniki_plik);
  9.  
  10. $vote = number_format($vote, 2, '.', ',');


* 100 ok działa ale jak tam dziele przez $suma to traktuje to jako 0 a jak zrobie echo zaraz przed funkcja to wyswietla konkretna liczbe..

no i number format tez nie umiem zastosowac jak nalezy bo i tak najpierw muszę podzielic
  1.  
  2. $array = array();
  3. foreach($array as $vote) {
  4. $array[] = number_format($vote/$suma, 2, '.', ',');
  5. }


Patrząc po manualu w foreach powinno byc & po as oraz zamiast $wynik powinno byc $array tak mi sie wydaje specjalista nie jestem.. no i tu w nawiasie musze chyba wypisac wartosci array(); ?

  1. <?php
  2. foreach (array(1, 2, 3, 4) as &$value) {
  3. $value = $value * 2;
  4. }
  5. ?>
  6. <?php
  7. $arr = array(1, 2, 3, 4);
  8. foreach ($arr as &$value) {
  9. $value = $value * 2;
  10. }
  11. // $arr is now array(2, 4, 6, 8)
  12. unset($value); // break the reference with the last element
  13. ?>
  14.  


axesmiley.png

Pomoże ktoś w temacie?

Ten post edytował fate 2.10.2012, 22:28:59


--------------------
Go to the top of the page
+Quote Post
b4rt3kk
post 2.10.2012, 22:32:04
Post #5





Grupa: Zarejestrowani
Postów: 1 933
Pomógł: 460
Dołączył: 2.04.2010
Skąd: Lublin

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


Co dzielisz przez $suma bo nie rozumiem w czym problem?

  1. $array = array();
  2. foreach($array as $vote) {
  3. $array[] = number_format($vote/$suma, 2, '.', ',');
  4. }


Zauważ, że zmienna $array jest pusta, jedynie zadeklarowałeś ją jako tablicę, więc pętla foreach nie wykona się ani razu. Powinno to wyglądać tak:

  1. foreach ($vote as $key => $value) $vote[$key] = number_format($value, 2, '.', ',');


Ten post edytował b4rt3kk 2.10.2012, 22:37:20


--------------------
Jeśli pomogłem, kliknij proszę 'pomógł'. Dzięki.
Go to the top of the page
+Quote Post
skowron-line
post 3.10.2012, 01:51:33
Post #6





Grupa: Zarejestrowani
Postów: 4 340
Pomógł: 542
Dołączył: 15.01.2006
Skąd: Olsztyn/Warszawa

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


  1. $wyniki_plik = array(1, 2, 3, 4);
  2.  
  3. $suma = array_sum($wyniki_plik);
  4. function procent($n)
  5. {
  6. global $suma;
  7. return number_format(($n * 100 / $suma), 2, '.', ',');
  8. }
  9.  
  10. $vote = array_map("procent", $wyniki_plik);
  11. var_dump($vote);


--------------------
I'm so fast that last night I turned off the light switch in my hotel room and was in bed before the room was dark - Muhammad Ali.
Peg jeżeli chcesz uprawiać sex to dzieci muszą wyjść, a jeżeli chcesz żeby był dobry ty też musisz wyjść - Al Bundy.

QueryBuilder, Mootools.net, bbcradio1::MistaJam
http://www.phpbench.com/
Go to the top of the page
+Quote Post
fate
post 4.10.2012, 06:54:56
Post #7





Grupa: Zarejestrowani
Postów: 824
Pomógł: 106
Dołączył: 14.03.2012
Skąd: Warszawa

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


skowron-line

Dzieki śliczne o to chodziło, zabraklo polecenia globals a juz bylem załamany heh no i poznałem ciekawą funkcje var dump o ktorej nie zapomne w problemach w przyszłości.
Teraz bede cisnal dalej z tematem medieval.gif ile jeszcze tych funkcji musze poznac zanim stane sie samodzielny przy takich krotkich skrypcikach..
Naszczęście wiem, że mogę liczyć na to forum aż chce się uczyć, super

DZIĘKI wielkie - ZAŁATWIONE. baaasmiley.gif


--------------------
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 27.05.2025 - 21:31