Vraag & Antwoord

Webprogrammeren & scripting

[PHP]ingewikkelde nested for-loop

Anoniem
sjemmie
9 antwoorden
  • Wie helpt me met m'n for-loop
    tot nu toe heb ik dit
    [code:1:d50a2198af]
    $teller=4;
    for($teller2=$teller;$teller2>=$teller-$teller;$teller2–)
    {
    for($rij=0;$rij<$teller2;$rij++)
    {
    for($nr=1;$nr<=$rij;$nr++)
    {
    echo $nr;
    }
    echo "<br>";
    }
    }[/code:1:d50a2198af]

    Uitvoer:
    [b:d50a2198af]
    1
    12
    123

    1
    12

    1[/b:d50a2198af]

    Maar de bedoeling is dit:
    [b:d50a2198af]
    1
    12
    123

    2
    23

    3[/b:d50a2198af]

    Wat doe ik verkeerd ?
  • Volgens mij heb ik 'm zo:
    [code:1:f935ca471e]
    $n = 3;

    for ($i = 1; $i <= $n; $i++)
    {
    echo '<p>';
    for ($j = $i; $j <= $n; $j++)
    {
    for ($k = $i; $k <= $j; $k++)
    {
    echo $k;
    }
    echo '<br>';
    }
    echo '</p>';
    }
    [/code:1:f935ca471e]
  • hardstikke thx
  • ik gebruik de functie preg_split om een zin op te splitsen in losse woorden
    [code:1:b14c9b4d2d]$woorden = preg_split('/[^a-zA-Z'"-]+/', $zin, -1, PREG_SPLIT_NO_EMPTY);
    $teller=count($woorden);[/code:1:b14c9b4d2d]met de nested for loop print ik dus de woorden afzonderlijk of weer in zinsdelen met [code:1:b14c9b4d2d]echo $k; [/code:1:b14c9b4d2d]maar hoe krijg ik de zindsdelen in de for loop weer tot 1 vaste string ?
    ik wil deze vaste string (van opgeknipte zinsdelen) namelijk weer vergelijken met de inhoud van een text bestand.
  • String concatten
    [code:1:2ae76d619a]
    echo $k;
    $string .= ' '. $k;
    [/code:1:2ae76d619a]
    Of begrijp ik je nu niet goed?

    Je zou ook nog alles naar een array kunnen 'push-en' en deze op het laatst kunnen joinen.
  • "Je zou ook nog alles naar een array kunnen 'push-en' en deze op het laatst kunnen joinen."

    Hoe zou je dat het beste kunnen doen ?

    zelf denk ik dat er in de 2de for loop iets toegevoegt zou moeten worden
    om de array te vormen

    for ($j = $i; $j <= $n; $j++)
    {
    //nog een for loop
    {

    }

    }
    maar hoe/wat?
  • [code:1:a98bcc5bd5]
    $array = array();

    // in loop
    array_push($array, $k);

    // joinen
    implode(' ', $array);
    [/code:1:a98bcc5bd5]
  • ik heb het nu zo [code:1:515a074a7a]$n = 3;
    $array = array();

    for ($i = 1; $i <= $n; $i++)
    {
    echo "\n<p>";
    for ($j = $i; $j <= $n; $j++)
    {

    for ($k = $i; $k <= $j; $k++)
    {
    echo "<b>" . $k . "</b>";
    array_push($array, $k);
    }
    // print_r($array);
    echo "<br>\n";
    }
    echo "</p>";
    }
    print_r($array);
    echo "<br>\n";
    [/code:1:515a074a7a]Array uitvoer is dan
    [b:515a074a7a]Array (
    [0] => 1
    [1] => 1
    [2] => 2
    [3] => 1
    [4] => 2
    [5] => 3
    [6] => 2
    [7] => 2
    [8] => 3
    [9] => 3 ) [/b:515a074a7a]

    Maar hoe haal je de waarden in groepjes op ? :oops:
  • [code:1:9b91beb884]<?php

    $n = 3;

    $array1 = array();
    for ($i = 1; $i <= $n; $i++)
    {

    echo "\n<p>";
    $array2 = array();
    for ($j = $i; $j <= $n; $j++)
    {
    $array3 = array();
    for ($k = $i; $k <= $j; $k++)
    {

    echo "<b>" . $k . "</b>";
    $array3[] = $k;
    }
    $array2[] = $array3;
    echo "<br>\n";
    }
    $array1[] = $array2;
    echo "</p>";
    }
    print_r($array1);
    echo "<br>\n";

    ?>[/code:1:9b91beb884]
    volgens mij is zoiets wat je wil


    geeft:
    [code:1:9b91beb884]Array
    (
    [0] => Array
    (
    [0] => Array
    (
    [0] => 1
    )

    [1] => Array
    (
    [0] => 1
    [1] => 2
    )

    [2] => Array
    (
    [0] => 1
    [1] => 2
    [2] => 3
    )

    )

    [1] => Array
    (
    [0] => Array
    (
    [0] => 2
    )

    [1] => Array
    (
    [0] => 2
    [1] => 3
    )

    )

    [2] => Array
    (
    [0] => Array
    (
    [0] => 3
    )

    )

    )[/code:1:9b91beb884]

    om je eerste groepje op te halen vraag je dus om array1[0]

    NB:
    $array[] = $waarde;
    is gelijk aan
    array_push($array, $waarde);
    voor zover ik weet

Beantwoord deze vraag

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.