Wytłumaczy ktoś kod ? Najlepiej linijka po linijce. Jest to kalkulator z hex do RGB.

Odpowiedz Nowy wątek
2019-03-04 22:38
0

<?php
function Hex2RGB($color){
$color = str_replace('#', '', $color);
if (strlen($color) != 6){ return array(0,0,0); }
$rgb = array();
for ($x=0;$x<3;$x++){
$rgb[$x] = hexdec(substr($color,(2*$x),2));
}
return $rgb;
}
$A1 = @$_POST['A1'];
print_r(Hex2RGB($A1));
?>

Pozostało 580 znaków

2019-03-04 23:07
2
Venthrill napisał(a):

function Hex2RGB($color){

Definicja funkcji Hex2RGB wymagającej jednego parametru, który wewnątrz niej będzie widoczny jako $kolor.

$color = str_replace('#', '', $color);

Wytnij z $color wiodący płotek i zamień na nic ''.

if (strlen($color) != 6){ return array(0,0,0); }

Jeśli długość stringa, który zostanie jest różna niż 6 znaków, zwróć tablicę z trzema zerami.
(Nota bene w CSS dopuszczalne jest również skrócone definiowanie koloru, np: #666).

$rgb = array();

Stwórz zmienną tablicową $rgb (w zasadzie można pominąć).

for ($x=0; $x<3; $x++){
...
}

Pętla. Powtarzaj od x=0 do x<3 z krokiem +1.

$rgb[$x] = hexdec(substr($color,(2*$x),2));

Wytnij ze stringa odcinek liczony od 2×x znaków, o długości 2 znaków.
Wycięty fragment przelicz z systemu szesnastkowego na dziesiątkowy.
Obliczoną wartość dziesiętną zapisz tablicy $rgb pod indeksem $x.

return $rgb;

Zwróć zbudowaną tablicę.

$A1 = @$_POST['A1'];

Przypisz zmiennej $A wartość przesłaną w formularzu.
@ Jeśli nic nie przesłano, nie wyświetlaj błędu.

print_r(Hex2RGB($A1));

Wyświetl zawartość tablicy zwróconej przez funkcję.


Małpka powoduje ze ew. blad spowodowany brakien deklaracji sie nie wyswietli - szybka_parowka 2019-03-05 07:30

Pozostało 580 znaków

2019-03-04 23:10
0

Używanie @ to bardzo zły pomysł.

Az tak bardzo to nie. Czasami sie przydaje. - szybka_parowka 2019-03-05 07:29

Pozostało 580 znaków

2019-03-05 08:10
0
serek napisał(a):

Używanie @ to bardzo zły pomysł.

$fp = @fopen($will_fail, 'r');
if (!$fp) {
    ...
}

Jakie zmiany proponujesz?

Pozostało 580 znaków

2019-03-05 09:36
2
$A1[] = "brak danych";
if (isset($_GET['A1'])==true) {
  $A1 = $_GET['A1'];
  $A1 = Hex2RGB($A1);
}
print_r($A1);

I to zwracanie samych zer przy niepoprawnych danych też może być mylące, powinno raczej zwrócić info, że wprowadzono niepoprawne dane, które wyglądają tak.

A odnośnie @fopen, patrz: if (is_file($plik)).


Pozostało 580 znaków

2019-03-05 17:50
0
Freja Draco napisał(a):

A odnośnie @fopen, patrz: if (is_file($plik)).

  1. To wprowadzi race condition. 2. fopen może zakończyć się niepowodzeniem z wielu innych powodów.
edytowany 1x, ostatnio: Mózg, 2019-03-05 17:56

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0