1

simple, i have array like that

$matches = array(
    array('255', '000', '000',), //red // (r,g,b,hex equivalent);
    array('000', '255', '000'), //green
    array('000', '000', '255'), //blue    
    array('0', '255', '255'), //cyan
    array('117', '076', '036'), //brown
    array('000', '000', '000'), //black
    array('208', '208', '208'), //grey
    array('247', '148', '029'), //orange
    array('244', '154', '193'), //pink
    array('255', '255', '000'), //yellow
    array('102', '045', '145'), //purple
    array('255', '255', '255') //white
);

and then i have variable

$a= "42, 53, 86";  // blue
$b= "17, 50, 147"; // blue

my question, how make a function if have many variant R G B color just show one group like as RED, GREEN, BLUE, CYAN, BROWN, BLACK , GREY, ORANGE, PINK, YELLOW, PURPLE, WHITE

i search find this function but not working

$matches = array(
    array('255', '000', '000',), //red // (r,g,b,hex equivalent);
    array('000', '255', '000'), //green
    array('000', '000', '255'), //blue    
    array('0', '255', '255'), //cyan
    array('117', '076', '036'), //brown
    array('000', '000', '000'), //black
    array('208', '208', '208'), //grey
    array('247', '148', '029'), //orange
    array('244', '154', '193'), //pink
    array('255', '255', '000'), //yellow
    array('102', '045', '145'), //purple
    array('255', '255', '255') //white
);


function closestColor($R, $G, $B, $matches) {
   $closest = array(255*3, 0, 0, 0);
      foreach($matches as $color => $byte) {
         $diff = abs($byte[0] - $R) + abs($byte[1] - $G) + abs($byte[2] - $B);
         if ($closest[0] > $diff) {
            $closest = array($sum_diff, $byte[0], $byte[1], $byte[2]);
         }
   }
   return $closest;
}

print_r(closestColor(240,192,224,$matches)); 
Ofri
  • 51
  • 7

0 Answers0