login  Naam:   Wachtwoord: 
Registreer je!
 Forum

(Solved)Fout Code (Nog 1 vraag)

Offline Wouser - 26/08/2006 19:53 (laatste wijziging 27/08/2006 13:30)
Avatar van WouserPHP interesse Heyz...

Ik ben bezig met een soort error systeem voor mijn forum...
Nu wil ik dat zo gaan doen mbv binear systeem... want ik geef namelijk aan mijn fouten een code...

en nu wil ik graag weten of het mogelijk is om

$error .= 1;
$error .= 2;
$error .= 4;

echo $error;

te laten optellen... zonder daar eigenlijk aparte variabelen van te maken... Als ik namelijk nu $error print dan geeft die 124 aan en dat wil ik juist niet hij moet namelijk 7 aangeven

16 antwoorden

Gesponsorde links
Offline Rens - 26/08/2006 19:57
Avatar van Rens Gouden medaille

Crew algemeen
Daarvoor heb je "+=".
Die telt het meteen op.
Dus:
  1. $error = 0;
  2. $error += 1;
  3. $error += 2;
  4. $error += 4;
  5.  
  6. echo $error;

Zal wel 7 geven 
Offline Maarten - 26/08/2006 19:57 (laatste wijziging 26/08/2006 19:57)
Avatar van Maarten Erelid Ipv .= moet je dan += gebruiken.

edit: aarg @ persoon hierboven 
Offline Wouser - 26/08/2006 19:58 (laatste wijziging 26/08/2006 20:05)
Avatar van Wouser PHP interesse ah ok bedankt 

Ik heb nu eigenlijk nog een vraag... Is het mogelijk om bijvoorbeeld het getal 7 uit elkaar te halen en dat dan doormiddel van het binear systeem...

Dus dan weet je dat je 3 getallen hebt namelijk...

1, 2 en 4

want
2^0 = 1
2^1 = 2
2^2 = 4

en dat vormt samen 7...
Offline rambo - 26/08/2006 21:01
Avatar van rambo HTML beginner Kijk hier eens: Dec2bin
Offline marten - 26/08/2006 21:05
Avatar van marten Beheerder Ik denk dat de topic starter bedoeld dat je 2 waarden weet namelijk 7 en dat er 3 getallen zijn. Dat je dan automatisch de 2^x eruit haalt. Ik denk dat je hier een functie voor kan / zal moeten schrijven. Of even op zoek gaan naar zo'n functie
Offline Rik - 26/08/2006 21:09 (laatste wijziging 26/08/2006 21:13)
Avatar van Rik Gouden medailleGouden medaille

Crew algemeen
Dit is wat ik er van heb gebrouwen:
  1. <?php
  2. $decimaal = 7;
  3.  
  4. $binair = decbin($decimaal);
  5. $stukjes = str_split($binair);
  6.  
  7. // str_split split vanaf links, maar we rekenen vanaf rechts
  8. array_reverse($stukjes);
  9.  
  10. $delen = array();
  11. foreach ($stukjes as $key => $stukje) {
  12. if ($stukje == 1) {
  13. $delen[] = pow(2, $key);
  14. }
  15. }
  16.  
  17. print_r($delen);
  18. /** OUTPUT:
  19.  * Array
  20.  * (
  21.  * [0] => 1
  22.  * [1] => 2
  23.  * [2] => 4
  24.  * )
  25. **/
  26. ?>
Offline Wouser - 26/08/2006 21:57 (laatste wijziging 26/08/2006 22:05)
Avatar van Wouser PHP interesse ok was ff spelletje aan het spelen zal ff kijken alvast bedankt voor jullie reacties 

mijn host ondersteunt nog geen php5 
Offline Maarten - 26/08/2006 22:08
Avatar van Maarten Erelid En dat is een probleem omdat..?
Offline Wouser - 26/08/2006 22:17
Avatar van Wouser PHP interesse Nu geen probleem meer heb een andere functie gevonden...

str_split is een php 5 functie maar gelukkig stond bij php.net scripts voor wanneer je php4 hebt...

Maar even terug 2 ontopic...

Boukefalos opzich werkt jouw script gedeeltelijk...
Maar het werkt niet bij bijvoorbeeld 6

Hij geeft dan "Array ( [0] => 1 [1] => 2 )" terwijl dit fout is...
Het zou dan namelijk "Array ( [1] => 2 [2] => 4 ) moeten zijn...

en bijvoorbeeld 10 geeft die
Array ( [0] => 1 [1] => 4 ) terwijl het Array ( [1] => 2 [3] => 8 )
Offline Dolfje - 27/08/2006 00:47 (laatste wijziging 27/08/2006 00:52)
Avatar van Dolfje Gouden medailleGouden medailleGouden medaille

PHP ver gevorderde
$delen[] = pow(2, $key);
veranderen in
$delen[] = pow(2, $key+1);

//oftopic,
de code die gegeven werd is wel een beetje omslagtig. i.p.v. str_split gebruikt een for() en doe de berekeningen die in de foreach staan direct (in de for)

  1. <?php
  2. $decimaal = 7;
  3.  
  4. $binair = decbin($decimaal);
  5.  
  6. for($length=strlen($binair),$maal=1; $lenght != 0; $length--, $maal++ )
  7. {
  8. $stukje = substr($binair, $length-1, 1);
  9. if ($stukje == 1) {
  10. $delen[] = pow(2, $maal);
  11. }
  12. }
  13.  
  14. print_r($delen);
  15. ?>


en deze code draait wel in php4
Offline Wouser - 27/08/2006 01:00 (laatste wijziging 27/08/2006 01:03)
Avatar van Wouser PHP interesse ok ga eens proberen 

Uhm hij print niet echt iets...
Offline Rik - 27/08/2006 11:43
Avatar van Rik Gouden medailleGouden medaille

Crew algemeen
Ik zie nu waarom mijn code het niet goed doet.
array_reverse($stukjes);
moet zijn:
$stukjes = array_reverse($stukjes);
Daarom deed 7 het dus wel want daar is ie omgkeerd hetzelfde.

Citaat:
$delen[] = pow(2, $key);
veranderen in
$delen[] = pow(2, $key+1);

Dat klopt niet want 2^0=1 Want anders kan je nooit op 1 uitkomen...

Citaat:
en deze code draait wel in php4


Niet echt....
$length is niet hetzelfde als $lenght

En ik heb die + 1 weggehaald.

Zo doet ie het wel
  1. <?php
  2. $decimaal = 7;
  3. $binair = decbin($decimaal);
  4.  
  5. for($length = strlen($binair), $maal = 0; $length > 0; $length--, $maal++)
  6. {
  7. $stukje = substr($binair, $length-1, 1);
  8. if ($stukje == 1) {
  9. $delen[] = pow(2, $maal);
  10. }
  11. }
  12.  
  13. print_r($delen);
  14. ?>
Offline Wouser - 27/08/2006 13:20
Avatar van Wouser PHP interesse Ik heb nog een vraagje ik ben nu al een dik uur bezig maar het lukt me niet echt...

Het lukt me niet echt om aan een bepaalde $delen[] een error toe te voegen namelijk..
$delen[] is steeds verschillend bij bij $decimaal = 7 is $delen['0'] gelijk aan 1 en bij $decimaal = 10 is $delen['0'] gelijk aan 2^1...

Het probleem hiermee is dus dit... ik wil zeg maar dat;
$delen['0'] = 2^0
$delen['1'] = 2^1
$delen['2'] = 2^2

dus wanneer zeg maar bij $decimaal = 10 dat;
$delen['1'] = 2^1,
$delen['3'] = 2^3

En dat $delen['0'] en $delen['2'] niet bestaan... of een waarde van 0 hebben... Hierdoor kan ik namelijk aan iedere 2^? een error toevoegen en nu kan dat niet echt...

Ik hoop dat ik een beetje duidelijk ben geweest... Dit was trouwens mijn idee... Als iemand anders een manier heeft om hiermee een error aan een bepaalde $delen[] toe te voegen mag hij spreken 
Offline Rik - 27/08/2006 13:23 (laatste wijziging 27/08/2006 13:25)
Avatar van Rik Gouden medailleGouden medaille

Crew algemeen
Maak van regel 9 ($delen[] = pow(2, $maal);)
dit: $delen[$maal] = pow(2, $maal);

(In het script van Dolfje dat ik een klein beetje heb aangepast.)
Offline Wouser - 27/08/2006 13:29
Avatar van Wouser PHP interesse Yes yes yes echt bedankt nu is ie precies zoals ik hem wil hebben en nodig heb in iedergeval hartstikke bedankt want opzich ging me het hier een beetje bove me pet maar ik ga dit stukje nog eens goed bekijken vandaag zodat ik het snap 
Offline Rik - 27/08/2006 13:39 (laatste wijziging 27/08/2006 13:40)
Avatar van Rik Gouden medailleGouden medaille

Crew algemeen
Graag gedaan! 

Hier nog wat leesvoer over Bits: 
klik
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.221s