Stel, ik heb een php var die er zo uitziet: $var1 = "156378346" (deze var wijzigt niet)
een tweede var is dit: $var2 = "1567836" (deze var bevat telkens een andere reeks cijfers)
elk cijfer in de tweede var moet vergeleken worden met de reeks cijfers in de eerste var.
Na vergelijking moet ik als resultaat bijvoorbeeld een array krijgen zoals dit:
array{
1 => 'ok',
5 => 'ok',
6 => 'ok',
3 => 'niet ok',
7 => 'ok',
8 => 'ok',
3 => 'ok',
4 => 'niet ok',
6 => 'ok'
}
de 'niet ok' waardes komen dus in de tweede array NIET voor.
Natuurlijk rekening houdend met de volgorde van de reeks.
Hoe doe ik dit? Ik veronderstel met een preg_match functie?
Ok, even ruw schetsen:
elk cijfer in de eerste var is een id van een bepaald gebouw. De reeks gebouwen is eigenlijk een wandeling die een wandelaar in die volgorde moet doen.
de tweede var zijn de gebouwen die de wandelaar uiteindelijk heeft bezocht. Ik moet dus kunnen uitmaken of de wandelaar de wandeling in de juiste volgorde heeft gewandeld en of hij bepaalde gebouwen wel of niet gepasseerd is.
De waarde 'niet ok' in de resultaat array betekent dus dat de wandelaar in dit gebouw niet geregistreerd is.
maar aangezien "6" vaker voorkomt: komt gebouw 6 dan vaker voor in de wandeling?
Is het werken met een array niet handiger?
Je hebt het nu over cijfers, maar wat als er meer dan 10 gebouwen verschijnen? Dan heb je ineens niet genoeg aan 0-9 als cijfers. IDs met A-Z erbij kan dan nog tot 36 tekens upgraden, maar ik blijf erbij dat een array een betere oplossing zou zijn
inderdaad, een gebouw kan vaker voorkomen in een reeks. En vermits er nooit meer dan 9 gebouwen voorkomen had ik met die cijfers gewerkt.
Indien arrays gemakkelijker zijn, dan wil ik het daarmee ook doen...
Je bedoelt dus dat var1 en var2 array1 en array2 worden. Hoe vergelijk ik die dan?
je maakt daarmee gebruik van de mogelijkheid om een string als een array te beschouwen.
Maar je mist daarmee de mogelijkheid om de id langer dan 1 karakter te gebruiken.
Het zijn nu cijfers. Maar zodra het er meer dan 9 worden, heb je een probleem.
Doorgaans zul je daarna voor "10" willen gaan.
Een slimme oplossing zou nog zijn om met A verder te gaan. Maar bij nr 36 ben je weer door de reeks heen.