Sterrenbeeld

Door David van der Tuijn, 20 jaar geleden, 6.366x bekeken

Deze functie retouneerd de Nederlandse naam van het sterrenbeeld volgens de astrologen.

Bron:
http://hemel.waarnemen.com/Tabellen/sterrenbeelden.html

Gesponsorde koppelingen

PHP script bestanden

  1. sterrenbeeld

 

Er zijn 7 reacties op 'Sterrenbeeld'

PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Crispijn -
Crispijn -
20 jaar geleden
 
0 +1 -0 -1
Hmm, ik vind het niet zo netjes dat je alles in een elseif constructie gooit. Mooier is het gebruik van een associative array. Hierin kan je zoeken of een input aan een bepaalde voorwaarde voldoet.

http://en.wikipedia.org/wiki/Associative_array

Tijd voor een uitdaging: tijd voor versie 1.1 :D
Marcel
Marcel
20 jaar geleden
 
0 +1 -0 -1
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
<?php
    error_reporting ( E_ALL );
    /*
     * string sterrenbeeld ( int $iDag ,  int $iMaand )
     * string sterrenbeeld ( 'yyyy-mm-dd' )
     * string sterrenbeeld ( 'dd-mm' )
     */

    function sterrenbeeld ( )
    {

        $a = func_get_args ( );
        if ( count ( $a ) == 1 )
        {

            if ( preg_match ( '#^\d{4}\-\d{2}\-\d{2}$#' , $a [ 0 ] ) )
                list ( , $iMaand , $iDag ) = explode ( '-' , $a [ 0 ] );
            elseif ( preg_match ( '#^\d{2}\-\d{2}$#' , $a [ 0 ] ) )
                list ( $iDag , $iMaand ) = explode ( '-' , $a [ 0 ] );
            elseif ( preg_match ( '#-#' , $a [ 0 ] ) )
                list ( $iDag , $iMaand ) = explode ( '-' , $a [ 0 ] );
            else
                return false;
        }

        elseif ( count ( $a ) > 1 )
            list ( $iDag , $iMaand ) = $a;
        else
            return false;
        if ( $iMaand > 12 )
        {

            $iDagKopie = $iDag;
            $iDag = $iMaand;
            $iMaand = $iDagKopie;
        }

        
        /*
         * Nu hebben we $iDag en $iMaand en halen nu het bijbehorende dagnr op (ik
         * gebruik het jaar 2000, omdat dat een schikkeljaar is, zo slaat het script
         * 29 februari niet over).
         */

        $iDagTijd = mktime ( 0 , 0 , 0 , $iMaand , $iDag , 2000 );
        $iDag = date ( 'z' , $iDagTijd );
        
        /*
         * We maken een array met sterrenbeelden
         *
         * vanaf dagnummer 020, oftewel 01-21 is: Waterman
         * vanaf dagnummer 050, oftewel 02-20 is: Vissen
         * vanaf dagnummer 080, oftewel 03-21 is: Ram
         * vanaf dagnummer 111, oftewel 04-21 is: Stier
         * vanaf dagnummer 141, oftewel 05-21 is: Tweelingen
         * vanaf dagnummer 172, oftewel 06-21 is: Kreeft
         * vanaf dagnummer 204, oftewel 07-23 is: Leeuw
         * vanaf dagnummer 236, oftewel 08-24 is: Maagd
         * vanaf dagnummer 267, oftewel 09-24 is: Weegschaal
         * vanaf dagnummer 297, oftewel 10-24 is: Schorpioen
         * vanaf dagnummer 327, oftewel 11-23 is: Boogschutter
         * vanaf dagnummer 356, oftewel 12-22 is: Steenbok
         */

        $aSterrenbeelden = array (
            array (  20 , 'Waterman'     ) ,
            array (  50 , 'Vissen'       ) ,
            array (  80 , 'Ram'          ) ,
            array ( 111 , 'Stier'        ) , # 138
            array ( 141 , 'Tweelingen'   ) ,
            array ( 172 , 'Kreeft'       ) ,
            array ( 204 , 'Leeuw'        ) ,
            array ( 236 , 'Maagd'        ) ,
            array ( 267 , 'Weegschaal'   ) ,
            array ( 297 , 'Schorpioen'   ) ,
            array ( 327 , 'Boogschutter' ) ,
            array ( 356 , 'Steenbok'     )
        );

        
        /*
         * We hebben nu het dagnummer, en een verband tussen dagnummers en
         * sterrenbeelden. De juiste pakken:
         */

        foreach ( $aSterrenbeelden as $iSleutel => $aSterrenbeeld )
            if (
                $iDag >= $aSterrenbeeld [ 0 ] AND
                array_key_exists ( $iSleutel + 1 , $aSterrenbeelden ) AND
                $iDag < $aSterrenbeelden [ $iSleutel + 1 ] [ 0 ]
            )

                return $aSterrenbeeld [ 1 ];
        
        /*
         * Als er nog niks is gevonden, dan is het steenbok
         */

        return $aSterrenbeelden [ 11 ] [ 1 ];
    }

    
    echo '<pre>';
    for ( $iMaand = 1 ; $iMaand <= 12 ; $iMaand++ )
        for ( $iDag = 1 ; $iDag <= 31 ; $iDag++ )
            echo
                str_pad ( $iDag   , 2 , '0' , STR_PAD_LEFT ) . '/' .
                str_pad ( $iMaand , 2 , '0' , STR_PAD_LEFT ) . ': ' .
                sterrenbeeld ( $iDag , $iMaand ) . "\n";
    echo '</pre>';
?>
Marcel
Marcel
20 jaar geleden
 
0 +1 -0 -1
Zo, en als je 1000 millisecondes hebt, dan heb je één seconde! :-O
Marcel
Marcel
20 jaar geleden
 
0 +1 -0 -1
Volgens mij bedoel je trouwens een honderdste milliseconde.
The Beeding Clown
The Beeding Clown
20 jaar geleden
 
0 +1 -0 -1
Bah, al die if/else statements, het kan allemaal veel makkelijker, kijk eens naar dit script eens dat ik ooit ook nog een keer voor de lol geschreven heb....

http://www.phphulp.nl/php/scripts/1/859/

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
<?php

//~~~~~~~~~~~~~~~~~~~~~~
//    Sterrenbeelden Array
//
//    De array keys van de $signs array gebruken we als de maanden (array begint bij 0 maar fixen we in de functie)
//
//    De eerste waarde van de nested arrays zijn de dagen waarop het sterrenbeeld afloopt.
//    De tweede waarde is het sterrenbeeld.
//
//    Bron: http://www.sterrenkunde.nl/sterrenbeelden/01c414937f0f9b907/01c4149387006a60c/index.html
//~~~~~~~~~~~~~~~~~~~~~~

$signs = array
(
    array(20,'Steenbok'),        // 22 dec - 20 jan
    array(20,'Waterman'),        // 21 jan - 20 feb
    array(20,'Vissen'),          // 21 feb - 20 mrt
    array(20,'Ram'),             // 21 mrt - 20 apr
    array(20,'Stier'),           // 21 apr - 20 mei
    array(20,'Tweeling'),        // 21 mei - 20 jun
    array(22,'Kreeft'),          // 21 jun - 22 jul
    array(22,'Leeuw'),           // 23 jul - 22 aug
    array(22,'Maagd'),           // 23 aug - 22 sep
    array(22,'Weegschaal'),      // 23 sep - 22 okt
    array(22,'Schorpioen'),      // 23 okt - 22 nov
    array(21,'Boogschutter'),    // 23 nov - 21 dec
    array(20,'Steenbok')         // 22 dec - 20 jan
);



//~~~~~~~~~~~~~~~~~~~~~~
//    Functie om te kijken welk sterrenbeeld we zijn
//
//    @parm int $day (1-31)
//    @parm int $month (1-12)
//    @return string
//~~~~~~~~~~~~~~~~~~~~~~

function sign($day,$month)
{

    global $signs;
    return ($day <= $signs[$month-1][0]) ? $signs[$month-1][1] : $signs[$month][1];
}





//~~~~~~~~~~~~~~~~~~~~~~
//    Naar de browser uitspugen
//~~~~~~~~~~~~~~~~~~~~~~    

echo '<p>Je bent een: <strong>'.sign($day,$month).'</strong></p>';

?>
Crispijn -
Crispijn -
20 jaar geleden
 
0 +1 -0 -1
Oi oi oi, die oplossing van nano is mooi!

De datums verschillen misschien enigzins van de astronomische sterrenbeelden, maar dat is te veranderen natuurlijk.
PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
The Beeding Clown
The Beeding Clown
20 jaar geleden
 
0 +1 -0 -1
@Davind & Crispijn

Tnx, dat was de efficiëntste manier die ik kon bedenken :)

Die datums, ach ja.. ik had inmiddels al 4 verschillende datums voor die dingen. Op elke site die ik tegen kwam gebruikten ze andere datums.

Iig, enjoy :)

Om te reageren heb je een account nodig en je moet ingelogd zijn.

Inhoudsopgave

  1. sterrenbeeld

Labels

  • Geen tags toegevoegd.

Navigatie

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.