Nummerologie script nodig

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Michel Hoefjenietteweten

Michel Hoefjenietteweten

14/10/2013 19:35:27
Quote Anchor link
Ik heb vrij weinig PHP kennis, maar ben een website aan het maken waar dingen over nummerologie op komen te staan. Nu heb ik een script nodig wat het volgende kan:

De gebruiker vult zijn geboortedatum in en daarna moeten die cijfers opgeteld worden. Als dat getal een 11, 22 of 33 is moet dat getal worden getoond. Anders moeten die cijfers weer bij elkaar opgeteld worden, en zo door.

Alvast bedankt, Michel :-)
 
PHP hulp

PHP hulp

25/04/2024 23:28:10
 
Jeroen Kwakkel

Jeroen Kwakkel

17/10/2013 14:57:03
Quote Anchor link
Hier een methode die doet wat jij wilt. Hij houd geen rekening met gevallen waarbij een getal nooit door 11 te delen zou zijn. Weet niet eens of zo'n geval bestaat. Deze methode werkt alleen met een input van xx-xx-xx.

resultaat van 13-5-86 = 1144 (104*11)

Je vraag is overigens nogal onduidelijk, moeten de resultaten alleen maar 11, 22 en 33 zijn? Wat vult de gebruiker precies in (15-5, 13-5-1986 of 13-5-86). Misschien kun je wat mee wat ik gemaakt heb, zo niet laat dan even weten. Wil ik er nog een keer naar kijken.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
echo inTafelVanElf("13-5-86");

  function inTafelVanElf($date) {
  $dates = explode("-", $date);
  $val = $dates[0]+$dates[1]+$dates[2];
    while($val%11 != 0) {
       $val += $dates[0]+$dates[1]+$dates[2];
    }
  return $val;
}
Gewijzigd op 17/10/2013 15:00:14 door Jeroen Kwakkel
 
Michel Hoefjenietteweten

Michel Hoefjenietteweten

17/10/2013 15:12:26
Quote Anchor link
Bedankt voor je reactie,

De invoer is xx-xx-xxxx. Allereerst moeten alle cijfers bij elkaar geteld worden ( 1 + 3 + 5 + 1 + 9 + 8 + 6 = 33 ) In dit geval is het getal 33 dus moet hij dit ook als output geven, is het getal iets anders dan 11, 22 of 33 moet deze nogmaals bij elkaar geteld worden en dan moet dit als output gegeven worden.

Ik hoop dat je een beetje snapt wat ik in gedachten heb?
 
Kris Peeters

Kris Peeters

17/10/2013 15:12:46
Quote Anchor link
EDIT: enkel maar met de geboortedatum?
Voor zover ik weet (ik ben geen numeroloog) gebeurt het zelfde ook met de naam.
------------------
Ik heb dit ooit gemaakt voor iemand op deze website

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
<?php
$naamdatum
= 'Mark Rutte 1967-02-14';
$steps;
$a = letters2number($naamdatum, $steps);
$b = reduceNumber($a, $steps);
echo $naamdatum . $steps .'<br>';


function
letters2number($letters, &$step=null) {
  $step .= '<br>';
  $result = '';
  for ($i=0; $i<strlen($letters); $i++) {
    $letter = substr($letters, $i, 1);
    $char = ord(strtoupper($letter));
    if($char >= 65 && $char <= 90) {  //  65 = A; ... 90 = z;  anything else will be ignored.  No letters with accents, no points or commas, ...
      $result .= ($char - 64);  // so 1 = A, 2 = B; ...
      $step .= ($char - 64) ." ";
    }

    if($char >= 48 && $char <= 57) {  // 0 -> 9
      $result .= $letter;  // the character is a digit; so we just add it
      $step .= $letter ." ";
    }
  }

  return $result;
}
function
reduceNumber($number, &$step=null) {
  $step .= '<br>';
  //$number = (int) $number;
  $newNumber = 0;
  for ($i=0; $i<strlen($number); $i++) {
    $newNumber += (int) substr($number, $i, 1);
  }

  if ($newNumber < 10) {
    $step .= $newNumber ;
    return $newNumber;
  }

  else {
    $step .= $newNumber ;
    return reduceNumber($newNumber, $step);
  }
}

?>



Die 11, 22, 33 zou ik moeten toevoegen ...
Gewijzigd op 17/10/2013 15:25:39 door Kris Peeters
 
Jeroen Kwakkel

Jeroen Kwakkel

17/10/2013 15:48:30
Quote Anchor link
Nu is de waarde 34, dan doet hij nog eens 3+4. Hier kom dus 7 uit. Als je bedoeld dat hij nog een keer die waarde berekend, dan is het toch gewoon 34+34. Wist niet welke van de twee.

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
echo start("13-06-1986");

function start($date) {
    $dates = explode("-", $date);
    $val = recursief($dates, 0, 0);
    if($val < 34 && $val%11 == 0) {
        return $val;
    } else {
        //return $val+$val; // Gewoon twee keer dezelfde waarde?
        return recursief(array($val), 0, 0);
    }
}
function recursief($waarde, $val, $times) {
    if($times == count($waarde))
        return $val;
    
    $waardes = str_split($waarde[$times]);
    
        foreach($waardes as $value) {
             $val += $value;
        }
        
    return recursief($waarde, $val, $times+1);
}
 
Michel Hoefjenietteweten

Michel Hoefjenietteweten

17/10/2013 16:38:38
Quote Anchor link
Die van Jeroen werkt inmiddels. Bedankt!
 



Overzicht Reageren

 
 

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.