Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Zamiana wartości w pętli
Kshyhoo
post
Post #1





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




Coś ciężko mi się myśli. Chcę pobrać dane z pliku, poddać je konwersji i ponownie zapisać do pliku (ew. wyświetlić). Pojedyncza linia działa, ale jak kombinuję w pętli, to ma komunikat:
Cytat
Warning: Missing argument 2 for rgb2hex(), called in C:\AppServ\www\...\hexToRGB.php on line 29 and defined in C:\AppServ\www\...\hexToRGB.php on line 16

Funkcja:
  1. function rgb2hex($r, $g, $b){
  2. return sprintf("#%02X%02X%02X", $r, $g, $b);
  3. }

Ja wywołam tak:
  1. $hex = rgb2hex(231,236,107);

Działa, a jak polecę pętlą:
  1. $dane = file("plik.txt");
  2. for( $w = 0; $w < count($dane); $w++ ) {
  3. rgb2hex($dane[$w]);
  4. }

To wywala błąd, choć (moim zdaniem) dane są ok:
Cytat
Array
(
[0] => 231,236,107

[1] => 231,191,167

[2] => 233,161,130

[3] => 98,190,174

[4] => 194,169,185

[5] => 135,186,183

[6] => 153,164,200
)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
peter13135
post
Post #2





Grupa: Zarejestrowani
Postów: 1 447
Pomógł: 191
Dołączył: 26.03.2008

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


Znowu podajesz jeden argument :/

Jak wywołujesz tak:
  1. $hex = rgb2hex(231,236,107);

to dajesz 3 argumenty.
Jak wywołujez tak :
  1. $dane = array();
  2. $dane = "124, 255, 11";
  3. $dane = explode(", ", $dane);
  4. rgb2hex($dane);

To dajesz tylko 1 argument, bo powyższy kod jest równoważny z takim :
  1. rgb2hex(array('124', '255', '11'));

Czyli podajesz w pierwszym argumencie tablicę 3 elementową.
A funkcja przyjmuje 3 parametry.
Jakbyś zrobił tak (na początku tak kombinowałeś):
  1. rgb2hex("124, 255, 11");

to znowu masz jeden parametr.
"124, 255, 11" - to jest jedna "zmienna" (raczej stała.. no ale mniejsza z tym). A nie 3 wartości, oddzielone przecinkami.

Musisz zrobić tak :

  1. $dane = array();
  2. $dane = "124, 255, 11";
  3. $dane = explode(", ", $dane);
  4. rgb2hex($dane[0],$dane[1],$dane[2]);


Lub przerobić funkcję, tak żeby przyjmowała jeden parametr jako tablicę 3 elementową :

  1. function rgb2hex($rgb){
  2.  
  3. return sprintf("#%02X%02X%02X", $rgb[0],$rgb[1],$rgb[2],);
  4.  
  5. }


Ten post edytował peter13135 10.03.2012, 13:31:19
Go to the top of the page
+Quote Post

Posty w temacie


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: 11.10.2025 - 02:48