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
Er zijn 7 reacties op 'Sterrenbeeld'
Gesponsorde koppelingen
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
http://en.wikipedia.org/wiki/Associative_array
Tijd voor een uitdaging: tijd voor versie 1.1 :D
Code (php)
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
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>';
?>
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>';
?>
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/
http://www.phphulp.nl/php/scripts/1/859/
Code (php)
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
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>';
?>
//~~~~~~~~~~~~~~~~~~~~~~
// 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>';
?>
Om te reageren heb je een account nodig en je moet ingelogd zijn.
Inhoudsopgave
Labels
- Geen tags toegevoegd.
PHP hulp
0 seconden vanaf nu