[PHP] Functie elke X waardes uitvoeren

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

  • WoBBeL
  • Registratie: Juni 2004
  • Laatst online: 03-06 13:28
Ik heb een beetje last van een hersenscheet. Ik moet voor een stukje interne software (dus t hoeft niet super snel te zijn :+ ) een SMS versturen. Dit ging tot op heden altijd goed echter liepen we vandaag tegen een limiet aan: ik mag maximaal 50 ontvangers definieren in mn SMS API die ik moet aanroepen.

Nu heb ik echter 130 bestemmingen die ik moet SMS'en, ik zou dus in totaal 3x de functie "send_sms()" moeten aanroepen. (2x volle 50 ontvangers, 1x 30 ontvangers).

Hoe splits ik dit netjes? Ik heb een array met alle bestemmingen hierin. Ik kan hier doorheen loopen met foreach() en met $i even bijhouden waar ik ben. 50 stuks bereikt? Top, dan voeren we het commando uit. Echter zit ik dan altijd met die laatste 30, ik haal dan nooit mn counter van 50.

Wie heeft hier een goede manier en denkwijze voor om dit te fixen :D ik probeer al 2 dagen te bedenken hoe ik dit programmatechnisch moet oplossen maar volgens mij moet het echt heel makkelijk zijn :X

[ Voor 8% gewijzigd door WoBBeL op 11-08-2023 20:05 ]

Beste antwoord (via WoBBeL op 11-08-2023 20:19)


  • Marco1994
  • Registratie: Juli 2012
  • Laatst online: 12:24
3 seconden google leerde mij dat array_chunk bestaat. En dat lijkt te doen wat jij wilt

Alle reacties


Acties:
  • Beste antwoord
  • +2 Henk 'm!

  • Marco1994
  • Registratie: Juli 2012
  • Laatst online: 12:24
3 seconden google leerde mij dat array_chunk bestaat. En dat lijkt te doen wat jij wilt

Acties:
  • 0 Henk 'm!

  • WoBBeL
  • Registratie: Juni 2004
  • Laatst online: 03-06 13:28
@Marco1994 die had ik gevonden maar dan kwam ik nog niet bij de oplossing. array_chuck maakt er als ik het goed begrijp een multidimensionale array van? Met andere woorden: length op 50 zetten en dan door array foreachen zoals je ook door een multidimensionale array doet.

Acties:
  • +1 Henk 'm!

  • WoBBeL
  • Registratie: Juni 2004
  • Laatst online: 03-06 13:28
Gelukt, thanks :)

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$sms_array_chunk = array_chunk($sms_array, 50);
$sms_array_chunk_keys = array_keys($sms_array_chunk);

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

    echo "Array nummer: " . $i . "<br>";

    foreach($sms_array_chunk[$sms_array_chunk_keys[$i]] as $key => $value) 
    {

        echo $value . "<br>";

    }

}

Acties:
  • +1 Henk 'm!

  • Marco1994
  • Registratie: Juli 2012
  • Laatst online: 12:24
Ik ben totaal niet bekend met php overigens. Maar wat je eigenlijk wilt is een lijst(array) omzetten in drie blokken, met een grootte van maximaal 50 en deze blokjes in een lijst zetten. Een zon blokje noem je een chunk, dat is voor zover ik weet in elke programmeer taal.

Nadat je die array_chunk aanroept met je geen lijst met 130 items, maar een lijst met 3 chunks met een chunk size van 50. Inderdaad een multidimensionale array. En je code voorbeeld lijkt een manier te zijn om om te gaan met die array.

Acties:
  • 0 Henk 'm!

  • WoBBeL
  • Registratie: Juni 2004
  • Laatst online: 03-06 13:28
@Marco1994 dat was mij onbekend, ik had geen idee hoe ik die code moest opsplitsen ondanks googlen, waarschijnlijk toch twee dagen de verkeerde termen gebruikt :X . Toen ik eenmaal die array had kon ik mij er mee uit de voeten 8)

Acties:
  • +1 Henk 'm!

  • Daos
  • Registratie: Oktober 2004
  • Niet online
Die $sms_array_chunk_keys in jouw code is overbodig. Dit is een array met de waardes 0,1,2,3.... Je had ook dit kunnen schrijven:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$sms_array_chunk = array_chunk($sms_array, 50);

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

    echo "Array nummer: " . $i . "<br>";

    foreach($sms_array_chunk[$i] as $key => $value) 
    {

        echo $value . "<br>";

    }

}


Voor de buitenste loop kan je trouwens ook gewoon een foreach gebruiken. Wordt dan zoiets:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$sms_array_chunk = array_chunk($sms_array, 50);

foreach($sms_array_chunk as $i => $chunk)
{

    echo "Array nummer: " . $i . "<br>";

    foreach($chunk as $key => $value) 
    {

        echo ($key + 1) . ": " . $value . "<br>";

    }

}
Pagina: 1