[php] letters aftellen

Pagina: 1
Acties:
  • 113 views sinds 30-01-2008
  • Reageer

Onderwerpen


Acties:
  • 0 Henk 'm!

  • pietje63
  • Registratie: Juli 2001
  • Laatst online: 16:14
Ik wil graag een tabel maken die de volgende plattegrond weergeeft:
Afbeeldingslocatie: http://dev.msrvsaurus.nl/huisvestiging/nieuweloods.gif (de romeinse cijfers kunnen worden vervangen door aa t/m af)

Om de letters links te krijgen dacht ik een for lus te kunnen gebruiken. Om de letters optellend te tonen had ik het volgende bedacht:

PHP:
1
2
3
4
5
6
$j=1;
for($i="a";$j<=32;$i++)
{
$j++;
...
}


Om het af te laten tellen dacht ik $i++ door $i-- te vervangen en "a" door "af" maar dit werkt niet. Ook als ik "a" door "z" vervang telt hij de letters niet af. Hoe kan ik dit wel voor elkaar krijgen? (de rest van de tabel opbouw is geen probleem, het gaat puur om het aftellen van de letters)

[edit]
$i=$i++ was idd ook $i++ fout gekopieed bij van alles uitproberen :).

[ Voor 16% gewijzigd door pietje63 op 26-11-2004 16:46 ]

De grootste Nederlandstalige database met informatie over computers met zoekfunctie!!


Acties:
  • 0 Henk 'm!

  • GX
  • Registratie: Augustus 2000
  • Laatst online: 14-05 09:40

GX

Nee.

Ik zou gewoon om alles te berekenen overal cijfers gebruiken en die bij weergave omzetten naar letters.

En $i=$i++; kan je ook gewoon als $i++; noteren.

[ Voor 10% gewijzigd door GX op 26-11-2004 16:44 ]


Acties:
  • 0 Henk 'm!

  • cenix
  • Registratie: September 2001
  • Laatst online: 16:17
pietje63 schreef op vrijdag 26 november 2004 @ 16:37:

PHP:
1
2
3
4
5
6
$j=1;
for($i="a"; $j<=32; [b]$i=$i++[/b])
{
$j++;
...
}
Ik heb al een tijdje niets meer in PHP gedaan, maar volgens mij geef je een assignment aan de for-lus toe.

Wijzig deze regel eens in

for ($i = "a"; $j <= 32; $i++)

Daarbij weet ik niet of je direct getallen kunt 'aftellen'

edit:

iets te laat en ook GC geeft hetzelfde aan :*)

[ Voor 13% gewijzigd door cenix op 26-11-2004 16:44 ]


Acties:
  • 0 Henk 'm!

  • Rataplan
  • Registratie: Oktober 2001
  • Niet online

Rataplan

per aspera ad astra

GX schreef op vrijdag 26 november 2004 @ 16:42:
En $i=$i++; kan je ook gewoon als $i++; noteren.
Deze statements zijn zeker niet gelijk :)

Als $i op waarde 1 begint, dan wordt na de eerste iteratie $i aan $i toegekend en daarna opgehoogd. Dat wil zeggen dat $i tijdens de eerste twee iteraties de waarde 1 heeft (edit) en daarna ook, omdat de assignment-operator pas NA de increment wordt uitgevoerd. $i=$i++ levert dus een eeuwige loop op. (/edit)

Correcte equivalenten voor de for zijn:
code:
1
2
3
4
5
$i++
++$i
$i+=1
$i=$i+1
$i=++$i


check it out!

[ Voor 14% gewijzigd door Rataplan op 26-11-2004 16:57 ]


Journalism is printing what someone else does not want printed; everything else is public relations.


Acties:
  • 0 Henk 'm!

  • pietje63
  • Registratie: Juli 2001
  • Laatst online: 16:14
GX schreef op vrijdag 26 november 2004 @ 16:42:
Ik zou gewoon om alles te berekenen overal cijfers gebruiken en die bij weergave omzetten naar letters.

En $i=$i++; kan je ook gewoon als $i++; noteren.
Op deze manier (met getallen omzetten en naar letters werken is het idd gelukt. Nog steeds een beetje kromme code (let vooral niet op de benoeming van variable enzo), maarja het werkt:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
$j=1;
// de y waarden
for($i=128;$j<=32;$i--)
{
// de j is nog een overblijfsel van mijn letters op/aftellen
$j++;

// converteren nummer naar letter
$m = $i;
// omdat er maximaal een a voor hoeft hoef ik alleen 
//dit te checken, wil je verder gaan dan zul je 122 + x*26 moeten checken
if($i>122)
{
$l = "a";
$m = $i-26;
$l .= chr($m);
}
else
{
$l = chr($m);
}

En de variabele l heeft nu mijn letter (combi) zie http://dev.msrvsaurus.nl/huisvestiging/huisvestiging1.php (al zal deze pagina niet lang meer zo bestaan..).

De grootste Nederlandstalige database met informatie over computers met zoekfunctie!!


Acties:
  • 0 Henk 'm!

  • Vold
  • Registratie: September 2001
  • Laatst online: 22-01 23:04
Volgens mij kan dit ook:
PHP:
1
2
3
4
5
<?
$sString = 'aa';
$sString++;
echo $sString;
?> 


Nog een loopje als je niet een lange reeks wilt hebben natuurlijk ;)

[ Voor 19% gewijzigd door Vold op 26-11-2004 19:57 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Vold schreef op vrijdag 26 november 2004 @ 19:50:
Volgens mij kan dit ook:
PHP:
1
2
3
4
5
<?
$sString = 'aa';
$sString++;
echo $sString;
?> 


Nog een loopje als je niet een lange reeks wilt hebben natuurlijk ;)
Er werd toch juist gezegd dat dat niet werkte? En volgens mij werkt dat ook niet.. Gewoon chr gebruiken ;)

Acties:
  • 0 Henk 'm!

  • Billie
  • Registratie: Januari 2003
  • Laatst online: 16-09 20:27
Desnoods de letters in een array zetten en dan gewoon de indices afgaan? :?

Acties:
  • 0 Henk 'm!

  • MBV
  • Registratie: Februari 2002
  • Laatst online: 20-09 22:44

MBV

ik zou het als volgt oplossen:

PHP:
1
2
3
4
5
6
<?
$nr = $nummerdatjewillatenzien;
$first = $nr / 26;
$second = $nr % 26;
echo chr($first).chr($second);
?>

$nr kan $i zijn, wat je in een for-loopje hebt.

Acties:
  • 0 Henk 'm!

Verwijderd

MBV schreef op vrijdag 26 november 2004 @ 20:35:
ik zou het als volgt oplossen:

PHP:
1
2
3
4
5
6
<?
$nr = $nummerdatjewillatenzien;
$first = $nr / 26;
$second = $nr % 26;
echo chr($first).chr($second);
?>

$nr kan $i zijn, wat je in een for-loopje hebt.
Dat antwoord is dus al gegeven..

Die mogelijkheid van een array maken met alle letters zat ik eerst ook aan te denken, maar met chr is wel netter.. Array lijkt me overzichtelijker, maar de TS heeft iig genoeg info om mee verder te gaan lijkt me ;)
Pagina: 1