www.webdeveloper.com
Results 1 to 5 of 5

Thread: How do I use a for loop to step thru a hex range and display color ?

  1. #1
    Join Date
    May 2006
    Posts
    245

    How do I use a for loop to step thru a hex range and display color ?

    Hi,

    I am trying to display different colors in sequence
    in batches of 100 at a time.

    Reason is to make selecting a color quicker.

    I want to be able to input a starting hex number for the color
    and then the script should increment logically from that point

    I have started this but got stuck on the
    hexedecimal iteration ...

    This is my code

    PHP Code:
    <?php
    /* color_test.php
    */
    ?>
    <!DOCTYPE HTML>
    <html>
    <head>
    <title>Auto Colour</title>
    <meta name="keywords" content="Auto Colour">
    <meta name="description" content="Auto Colour">
    <meta name="revisit-after" content="2 days">
    <meta name="robots" content="all, index, follow">
    <meta name="author" content="SimplePage.net">
    <meta name="Rating" content="General">
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <link rel="shortcut icon" href="/sys_images/favicon.png" type='image/png'>
    <link rel="icon" href="/sys_images/favicon.png" type='image/png'>

    <style type="text/css" media="all">
    <?php
    echo "
    section{
        display:block;
        position:absolute;
        top:20px;
        left:100px;
        width:400px;
        background:white;
        }

    </style>"
    ;
    ?>    
    </head>
    <body>

    <?php

    for ($i 0$i 100 $i=$i++) {

        
    $top_pos1 = (($i-1)*20)+20;
        
    $top_pos1px $top_pos1.'px';

        
    $hex1_start_1 'B';   // THESE WOULD BE PART OF INPUT START COLOR HEX
        
    $hex1_start_2 '3';
        
        
    $hex2_start_1 'B';   // THESE WOULD BE PART OF INPUT START COLOR HEX
        
    $hex2_start_2 '3';

        
    $hex3_start_1 'B';   // THESE WOULD BE PART OF INPUT START COLOR HEX
        
    $hex3_start_2 '3';


        
    $col_hex1a $hex1_start_2 // some function of $i or a diff for loop var ??
        
     ///  I NEED TO DO THE ABOVE FOR EACH OF THE 3 PARTS OF THE COLOR. !!

        
    $col_hex1 $col_hex1a.$col_hex1b;  // runs thru 0-9 then A-H
        
    $col_hex2 $col_hex2a.$col_hex2b;
        
    $col_hex3 $col_hex3a.$col_hex3b;
        
        
    $hex_color '#'.$col_hex1.$col_hex2.$col_hex3;
        
            
        echo 
    "
        <section style=\"top:
    $top_pos1px;\">
        <span style=\"margin:0 0 0 40px; color:
    $hex_color;font-size:24px;\">This is color no:$i $hex_color</span>
        </section>
        "
    ;
        }
        
    ?>    
    </body>
    </html>
    So the hard bit is incrementing 0-H on one set of the number hex code
    then incrementing the second set etc.

    Hmmm . ..

    Would appreciate some ideas on how I can do this


    Thanks.



    .
    Last edited by jeddik; 11-21-2013 at 08:15 AM.
    Developers Choice Revealed:
    www.devchoice.info
    Which host has won, and why ?

  2. #2
    Join Date
    Aug 2004
    Location
    Ankh-Morpork
    Posts
    19,326
    Just a proof of concept to show how you can use [s]printf() to handle the output, while working with decimal values:
    PHP Code:
    <?php

    $hexValue 
    '00CC99';
    $decValue hexdec($hexValue);
    $min max(0$decValue 30);
    $max min(hexdec('FFFFFF'), $decValue 30);
    foreach(
    range($min$max) as $color) {
        
    printf('%06X'.PHP_EOL$color);
    }
    "Please give us a simple answer, so that we don't have to think, because if we think, we might find answers that don't fit the way we want the world to be."
    ~ Terry Pratchett in Nation

    eBookworm.us

  3. #3
    Join Date
    May 2006
    Posts
    245
    That's Great.

    so I have done :
    PHP Code:
    $hexValue '00CC99';
    $decValue hexdec($hexValue);

    for (
    $i=0$i<=100$i++){

        
    $x $decValue+$i;
        
    $y dechex($x);
        
        if( 
    strlen($y) == 6){
            }
        if( 
    strlen($y) == 4){
            
    $y '00'.$y;
            }
        if( 
    strlen($y) == 2){
            
    $y '0000'.$y;
            }


    Which is pretty much there, I think


    Thanks again.


    .
    Last edited by jeddik; 11-21-2013 at 03:21 PM.
    Developers Choice Revealed:
    www.devchoice.info
    Which host has won, and why ?

  4. #4
    Join Date
    Dec 2011
    Location
    Centurion, South Africa
    Posts
    795
    Just a variant of what you had done, jeddik:

    PHP Code:
    $hexValue '00CC99';
    $decValue hexdec($hexValue);

    for (
    $i 0$i <= 100; ++$i){

        
    $y str_pad(dechex($decValue $i), 60STR_PAD_LEFT);


    JavaScript: Learn | Validate | Compact | bionoid

  5. #5
    Join Date
    May 2006
    Posts
    245
    Thanks.

    Actually, I realised that I needed that when my script
    started outputting only 3 digit results - I had not allowed for that.

    Now it is "padded up" to 6 - it is better
    Developers Choice Revealed:
    www.devchoice.info
    Which host has won, and why ?

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
HTML5 Development Center



Recent Articles