Toon posts:

[php] een FOR statement, kom er niet uit

Pagina: 1
Acties:

Verwijderd

Topicstarter
ik heb een aantal tekens in een array zitten:

$boe[0] = "a";
$boe[1] = "b";
$boe[2] = ";";
$boe[3] = "c";

Nu wil het nummer van de array waar de waarde ';' is hebben in een variabele (nummer 2 in dit geval, dus $waarde = 2;). Hoe kan ik dit het beste doen? Mij leek het met een for actie, ik kom er alleen niet uit.

Wat ik heb:

for ($i = 0; $boe[$i] == ';'; $i++) {
echo $boe[$i];
$waarde = $i;
}

Maar ik krijg een klein beetje het gevoel dat dit tien keer makkelijker kan?

Tnx.

  • justmental
  • Registratie: April 2000
  • Niet online

justmental

my heart, the beat

Volgens mij kan het niet sneller/makkelijker.

Who is John Galt?


  • Nielsz
  • Registratie: Maart 2001
  • Niet online
while

  • Glimi
  • Registratie: Augustus 2000
  • Niet online

Glimi

Designer Drugs

(overleden)
Pseudocode:
code:
1
2
3
4
5
6
7
8
9
10
11
12
$grooteArray = grootte( $boe );
$toSearchChar = ";";
$keepGoing = true;

for( $i = 0; ($i < $grooteArray) && keepGoing ; $i++ ) {

    if( $boe[$i] == $toSearchChar ){
      keepGoing = false;
    }else{
     //doe je zut met $boe en $bla
    }
}

  • D2k
  • Registratie: Januari 2001
  • Laatst online: 31-08 10:19

D2k

Op dinsdag 09 juli 2002 11:53 schreef justmental het volgende:
Volgens mij kan het niet sneller/makkelijker.
ik zie ook zo 1-2-3 geen snellere oplossing. De standaard php array functies kunnen volgens mij niet de positie van ';' aangeven

Doet iets met Cloud (MS/IBM)


  • D2k
  • Registratie: Januari 2001
  • Laatst online: 31-08 10:19

D2k

Op dinsdag 09 juli 2002 11:53 schreef Nielsz het volgende:
while
mjah ok. kan

Doet iets met Cloud (MS/IBM)


Verwijderd

Topicstarter
okidokie, bedankt.

heb nu dit:

$var = 0;
for ($i = 0; $i <= $aantal; $i++) {
if ($boe[$i] == ';' AND $var == 0) {
echo "$i<br>";
$waarde = $i;
$var = 1;
}
}

dit om te voorkomen dat ie de tweede ';' en verdere ';' ook meepakt.

Alleen waarom is de waarde $waarde nu toch nog de hoogste $i die voorkomt in de FOR actie? Dus $aantal heeft als waarde 37, waarom is $waarde dit dan ook? Hier snap ik niks van. Ik geef toch aan dat de waarde van $waarde de $i is op het moment dat $boe[$i] gelijk is aan ';'?

snapt iemand het nog?

Tnx.

  • TheDane
  • Registratie: Oktober 2000
  • Laatst online: 21:36

TheDane

1.618

Op dinsdag 09 juli 2002 11:54 schreef D2k het volgende:

[..]

ik zie ook zo 1-2-3 geen snellere oplossing. De standaard php array functies kunnen volgens mij niet de positie van ';' aangeven
toch beter zoeken volgens mij

array_search()

  • droeftoeter
  • Registratie: Mei 2002
  • Laatst online: 19-06-2025
for ($i = 0; $i < count($boe); $i++) {
if ($boe[$i] == ";") { bla }
else { blabla }
}

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 28-08 12:00

Janoz

Moderator Devschuur®

!litemod

Op dinsdag 09 juli 2002 11:56 schreef ivy het volgende:
okidokie, bedankt.

heb nu dit:

$var = 0;
for ($i = 0; $i <= $aantal; $i++) {
if ($boe[$i] == ';' AND $var == 0) {
echo "$i
";
$var = 1;
}
}

dit om te voorkomen dat ie de tweede ';' en verdere ';' ook meepakt.

Tnx.
Je eerste oplossing was trouwens wel wat sneller dan deze aangezien de eerste oplossing stopte zodra je een ; tegenkwam...

De oplossing hierboven is waarschijnlijk het snelst (die met de functie)...

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Verwijderd

ik zou ipv een for loop een foreach gebruiken...
code:
1
2
3
4
5
foreach($boe as $key => $value){
    if($value == ";"){
      $waarde = $key;
    }
}

is veel korter...

  • D2k
  • Registratie: Januari 2001
  • Laatst online: 31-08 10:19

D2k

Op dinsdag 09 juli 2002 11:57 schreef TheDane het volgende:

[..]

toch beter zoeken volgens mij

array_search()
hmmz zie je wel
wist dat er een functie voor was, kon um alleen niet vinden :X
tis nog vroeg ;)

Doet iets met Cloud (MS/IBM)


Verwijderd

Topicstarter
array search doet iets heel irritants,

als ik namelijk de volgende string heb:

aahjkshkdf;sdfsdjhjsdf;

dan geeft ie de key van de laatste ';'.

Dus hij zoekt teken voor teken naar de ';', vindt er 1, gaat verder zoeken en vindt de 2e. Vervolgens overschrijft hij de 1e key....

  • eNaSnI
  • Registratie: November 2001
  • Niet online
http://www.php.net/manual/en/ref.array.php

Misschien staat daar wat je nodig hebt? De kant en klaar oplossing komt er zo aan ;)

Wie zoekt, zal vinden http://www.google.com


  • Nielsz
  • Registratie: Maart 2001
  • Niet online
Op dinsdag 09 juli 2002 12:12 schreef eNaSnI het volgende:
http://www.php.net/manual/en/ref.array.php

Euhhm UTFS?? |:(
:Z

  • D2k
  • Registratie: Januari 2001
  • Laatst online: 31-08 10:19

D2k

Op dinsdag 09 juli 2002 12:12 schreef eNaSnI het volgende:
http://www.php.net/manual/en/ref.array.php

Euhhm UTFS?? |:(
uhm niet meer doen??

Doet iets met Cloud (MS/IBM)


Verwijderd

Je wil dus het eerste gespecificeerde teken in een string vinden?
PHP:
1
<?function find_array($find, $string) {  for($count=0;$count<strlen($string);$count++) {    if ($find==$string[$count]) return $count;  }  return -1; // niks gevonden}?>

misschien helpt dit |:(

je moet hem dan natuurlijk aanroepen met find_array(";",$destring)

Verwijderd

Topicstarter
jongens ik kan niet zo goed meer uit mijn woorden komen. Hier is de hele code:
PHP:
1
<?$putcode = "18db6";$putcode = strtoupper($putcode);$filter = 1;$correctiewaarde = "2.58";$str = "3;4-12-00;19:00:00;11,9144176599625;";$watniet = ";";// hieronder tellen hoeveel letters er zijn$aantal = strlen($str);    // hieronder de origineel bekijken    echo "<b>originele string:</b><br><br>";    echo "$str<br><br>";        // hieronder alle letters in een array zetten.            for ($i = 0; $i <= $aantal; $i++) {        $boe[$i] = substr($str, $i, 1);        }            // hieronder de string weergeven via de arrays.                        echo "<b>string via arrays:</b><br><br>";            for ($i = 0; $i <= $aantal; $i++) {            echo "$boe[$i]";            }    // hieronder kijken welk nummer het eerste punt komma heeft:    echo "<br><br><b>het nummer van de array die al s eerste een ';' bevat:</b><br><br>";????????>

Weet iemand hoe ik het eerste nummer kan weergeven?

Verwijderd

aangezien mensen hier niet lezen zie mijn reactie boven de vorige

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 28-08 12:00

Janoz

Moderator Devschuur®

!litemod

Ik denk dat je dan beter bij strings kunt kijken. Daar zijn wel functies om gedeeltes uit de string te halen en posities van bepaalde tekens op te vragen.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Verwijderd

of nog korter:
PHP:
1
<?  strpos(";",$destring);?>

TADAAAAAAAAAAAAAAAAAAAAAAAAAAAAA :P
Sorry modjes, ik ben het wel eens met eNaSnI, typisch gevalletje UTFS wel :*

Verwijderd

Topicstarter
Op dinsdag 09 juli 2002 12:23 schreef Beeehhh het volgende:
of nog korter:
PHP:
1
<?  strpos(";",$destring);?>

TADAAAAAAAAAAAAAAAAAAAAAAAAAAAAA :P
Sorry modjes, ik ben het wel eens met eNaSnI, typisch gevalletje UTFS wel :*
Wanneer kan ik uw schoenen komen likken met mijn tong?

mucho gracias!

Dat zocht ik dus......

Verwijderd

Ik snap niet goed waarom je elke letter apart in een array steekt, is het niet gemakkelijke om explode() te gebruiken ?

http://www.zend.com/manual/function.explode.php

  • Joto
  • Registratie: Juni 2000
  • Laatst online: 02-09 12:21
Op dinsdag 09 juli 2002 12:23 schreef Beeehhh het volgende:
of nog korter:
PHP:
1
<?  strpos(";",$destring);?>

TADAAAAAAAAAAAAAAAAAAAAAAAAAAAAA :P
Sorry modjes, ik ben het wel eens met eNaSnI, typisch gevalletje UTFS wel :*
maar dan zal je wel eerst een implode moeten doen, als je met een array begint

string implode(string glue, array pieces)

1+1+1 = 1

Pagina: 1