Hallo,

Ik ben bezig met een LOI opleiding en ik loop vast op een bepaalde gedeelte..
Misschien kunnen jullie me verder helpen?

Kopieer de uitwerking van oefenopgave 8-2. Onderzoek de lange string die u hebt gemaakt op de voorkomens van "AAAAAA". Gebruik hiervoor een for-lus en toon op het scherm van ieder voorkomen de positie van de eerste instantie van de string af.

In deze opdracht hoeft u de lange string niet af te drukken.


<?php
$regel1 = "TATAGTTTCCTCTCTATAT";
$regel2 = "AAAGCCTCAAATCTCTCTAGTAAAAAAGCCTCAAATCTCTCTAGTAAA AAAGCCTCAAATCTCTCTAGTAAAAAAGCCTCAAATCTCTCTAGTAAA AAAGCCTCAAATCTCTCTAGTAAAAAAGCCTCAAATCTCTCTAGTAAA AAAGCCTCAAATCTCTCTAGTAAAAAAGCCTCAAATCTCTCTAGTAAA AAAGCCTCAAATCTCTCTAGTAAAAAAGCCTCAAATCTCTCTAGTAAA AAAGCCTCAAATCTCTCTAGTAAAAAAGCCTCAAATCTCTCTAGTAAA";
$regels = $regel1.$regel2;
$regels = str_replace(" ", "", $regels);
echo $regels;
?>


En weetje nog wat irritant is? Als zeggen, een 'programma' maken, moet het hele HTML-mikmak erbij, terwijl het om php gaat. Vind ik!

Groetjes Alex.
Ik moet van die opdracht een for-lus gebruiken.. #zucht
<?php
$positie = 0;
while($positie = strpos($regels , 'AAAAAA', $positie ) {
echo 'op '.$positie.' staat AAAAAA.<br />';
}
?>


vergeet for in deze opgave. Bestudeer de for lus wel maar gebruik dan mijn bovenstaande simpel voorbeeldje
Als ik dat script uitprobeer, blijft hij maar laden..
oef het was even uit het hoofd. dan heb je een oneindige lus. dus hij blijft hem maar herhalen.

ben over een uurtje thuis, kan dan nog wel even de oplossing zoeken..

of iemand anders?
Maar is er dan een goed alternatief voor LOI dan?
een for lus is hier niet echt geschik voor nee.

Het gaat wel maar dan met een omweg voor zover ik weet.

<?php


# De string waarin we gaan zoeken.

$haystack = 'AAAGCCTCAAATCTCTCTAGTAAAAAAGCCTCAAATCTCTCTAGTAAAAAAGCCTCAAATCTCTCTAGTAAAAAAGCCTCAAATCTCTCTAGTAAAAAAGCCTCAAATCTCTCTAGTAAAAAAGCCTCAAATCTCTCTAGTAAAAAAGCCTCAAATCTCTCTAGTAAAAAAGCCTCAAATCTCTCTAGTAAAAAAGCCTCAAATCTCTCTAGTAAAAAAGCCTCAAATCTCTCTAGTAAAAAAGCCTCAAATCTCTCTAGTAAAAAAGCCTCAAATCTCTCTAGTAAA';


# De string waarnaar we gaan zoeken.

$needle = 'AAAAAA';


# De lengte van de string waarnaar we aan het zoeken zijn bepalen.

$length = strlen($needle);


# Tellen hoevaak de string waarnaar we aan het zoeken voorkomt in de string waarin we aan het zoeken zijn.

$count = substr_count($haystack, $needle);


# De start positie voor strpos bepalen.

$offset = 0;


# De positie vaan elke gevonden string opzoeken en weergeven.

for($i = 0; $i < $count; $i++){

# De positie bepalen voor de huidige sub string.

$position = strpos($haystack, $needle, $offset);

# De nieuwe start positie bepalen.

$offset = $position + $length;


# De gevonden positie weergeven.

echo $position.'<br />';

}

?>
Hier wil ik toch even iets duidelijk maken; over de relatie for/while
Men vergeet vaak dat een for gewoon een while is; maar dan met twee extra troeven.
(of vice versa ...)

Een for ziet er zo uit:
<?php
for(begin_statement; conditie; statement_aan_einde_van_iteratie) {
...
}
?>

Dit is per definitie het zelfde als
<?php
begin_statement;
while(conditie) {
...
statement_aan_einde_van_iteratie;
}
?>

Maar om één of andere reden grijpen mensen enkel naar een for wanneer de conditie iets met de teller doet (bv $i < count($items))
terwijl men bij de while andere condities aanvaardt zonder morren.

bv. voor dit topic:
<?php
$regels = "AAAGCCTCAAATCTCTCTAGTAAAAAAGCCTCAAATCTCTCTAGTAAA AAAGCCTCAAATCTCTCTAGTAAAAAAGCCTCAAATCTCTCTAGTAAA AAAGCCTCAAATCTCTCTAGTAAAAAAGCCTCAAATCTCTCTAGTAAA AAAGCCTCAAATCTCTCTAGTAAAAAAGCCTCAAATCTCTCTAGTAAA AAAGCCTCAAATCTCTCTAGTAAAAAAGCCTCAAATCTCTCTAGTAAA AAAGCCTCAAATCTCTCTAGTAAAAAAGCCTCAAATCTCTCTAGTAAA";
for ($positie = 0; $positie = strpos($regels , 'AAAAAA', $positie ); $positie++) {
echo 'op '.$positie.' staat AAAAAA.<br />';
}
?>

Reageren