php Function parameters

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Jop B

Jop B

08/03/2019 21:27:43
Quote Anchor link
Goede avond,


Een vraag over php functie met parameters.

Wat is de bedoeling:

Aanroepen ergens in het script met een 1e parameter gevolgd door nummers. De nummers kunnen variëren qua aantallen. (zie hieronder)
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
myFuction(blue, 1, 3);

myFuction(blue, 1, 3, 6, 10);

myFuction(blue, 11;
?>


In de functie zelf moet een loop voor het aantal nummers dat is ingegeven.
Dat is voor bovenste functie 2
de middelste 4
en de laatste 1

De loop moet het volgende teruggeven

Bovenste functie
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
<li>item 1</li>
<li>item 3</li>


Middelste functie
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<li>item 1</li>
<li>item 3</li>
<li>item 6</li>
<li>item 10</li>


Laatste functie
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<li>item 11</li>



Hoe krijg ik die nummers nu geloopt? Moet ik dan een array maken met een foreach loop ?


Alvast bedankt :)
Gewijzigd op 08/03/2019 21:28:25 door Jop B
 
PHP hulp

PHP hulp

22/10/2021 05:16:26
 
Rob Doemaarwat

Rob Doemaarwat

08/03/2019 21:40:05
Quote Anchor link
Met func_get_args() of heel hip met "..."
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
function myFuction($color, ...$items){
  print("Color: $color\nItems: ");
  print_r($items);
}
Gewijzigd op 08/03/2019 21:40:30 door Rob Doemaarwat
 
Ozzie PHP

Ozzie PHP

08/03/2019 21:53:46
Quote Anchor link
@Rob: Sinds welke PHP-versie is dat "..."
 
Rob Doemaarwat

Rob Doemaarwat

08/03/2019 22:13:09
Quote Anchor link
Ik heb het even opgezocht voor je: sinds PHP 5.6 https://secure.php.net/manual/en/functions.arguments.php. Zou bij de meeste hosting boeren dus wel moeten werken.
 
Frank Nietbelangrijk

Frank Nietbelangrijk

08/03/2019 22:25:30
Quote Anchor link
>> In de functie zelf moet een loop voor het aantal nummers dat is ingegeven.

Waarom dan niet gewoon met een array werken zoals dat overal gebeurd?
 
Thomas van den Heuvel

Thomas van den Heuvel

08/03/2019 22:26:15
Quote Anchor link
En wat is er mis met een array als tweede parameter? :/
 
Jop B

Jop B

08/03/2019 22:28:36
Quote Anchor link
Dank voor de reacties.

@thomas Hoe kan ik die tweede parameter als array kenmerken?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
function myFuction($paramater1, $paramater2=array){
}

en hoe vul ik de aanroep dan?

myFunction(paramter1, parameter2 met nummers))
?>
Gewijzigd op 08/03/2019 22:30:28 door Jop B
 
Thomas van den Heuvel

Thomas van den Heuvel

09/03/2019 00:12:09
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
// definitie
function myFunction($var1, $var2=array()) {
    // ...
}

// aanroep
myFunction('whatever', array(1,2,3));
?>

Voordeel van deze methode in dit geval is dat je direct een loop kunt uitvoeren op de items zonder dat je je parameters hoeft te inspecteren/te ontleden. Dus ook in dat opzicht lijkt het mij logisch dat je hiervoor een array gebruikt. Het is een lijst van items.
 
Ozzie PHP

Ozzie PHP

09/03/2019 00:51:06
Quote Anchor link
Rob Doemaarwat op 08/03/2019 22:13:09:
Ik heb het even opgezocht voor je: sinds PHP 5.6 https://secure.php.net/manual/en/functions.arguments.php. Zou bij de meeste hosting boeren dus wel moeten werken.

De link doet het niet.

Grappig ... ik kan me niet herinneren dat ik deze methode ooit ben tegengekomen.

Zitten er nog nadelen aan die methode? Is het om een of andere reden af te raden? Ik heb het namelijk niet eerder gezien.

Stel dat je bijv. een functie hebt die strings bewerkt en vervolgens aan elkaar plakt en returnt (ik verzin maar even wat), dan zou ik normaliter als argument een array meegeven met daarin de losse strings die bewerkt en aan elkaar geplakt moeten worden. Maar met deze methode kun je de strings dus gewoon rechtstreeks stuk voor stuk invoeren in plaatsa van via een array. Da's wel interessant lijkt me.

Wanneer zou je deze methode gebruiken in plaats van een array? Daar ben ik dan wel weer benieuwd aan. Aangezien ik deze methode nooit tegenkom ben ik benieuwd of er nadelen aan kleven.
 
Frank Nietbelangrijk

Frank Nietbelangrijk

09/03/2019 01:04:36
Quote Anchor link
>> Stel dat je bijv. een functie hebt die strings bewerkt en vervolgens aan elkaar plakt en returnt (ik verzin maar even wat), dan zou ik normaliter als argument een array meegeven met daarin de losse strings die bewerkt en aan elkaar geplakt moeten worden. Maar met deze methode kun je de strings dus gewoon rechtstreeks stuk voor stuk invoeren in plaatsa van via een array. Da's wel interessant lijkt me.

één doel van een functie is dat je hem meerdere keren kunt aanroepen. Code herhaling voorkomen dus. Maar ik zie mezelf geen functie aanroepen met 30 parameters. Al helemaal niet als de benodigdheden al in een array of object zitten. Jij geeft verdomd net dat ene voorbeeldje waarin het misschien nog wel handig zou kunnen zijn.. het aan elkaar plakken van een paar strings. En dat terwijl PHP al implode heeft en de string Concatenation operator. Nee sorry Dit kan bij het rijtje "PHP rommel".



Toevoeging op 09/03/2019 01:09:19:

@Job vanaf PHP 7 kun je ook type hinting gebruiken:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
function whatever(array $arr): void
{
}

?>


Toevoeging op 09/03/2019 01:11:26:

Die : void wil zeggen dat de functie geen waarde teruggeeft (met een return statement)
Gewijzigd op 09/03/2019 01:10:11 door Frank Nietbelangrijk
 
Ozzie PHP

Ozzie PHP

09/03/2019 02:36:54
Quote Anchor link
>> Jij geeft verdomd net dat ene voorbeeldje waarin het misschien nog wel handig zou kunnen zijn..

Stel dat die strings ergens vandaan komen, getrimd en gefilterd moeten worden ... zomaar een voorbeeldje. Het gaat er dus eigenlijk om dat je dit kunt gebruiken als alternatief voor een numerieke array.
 
Rob Doemaarwat

Rob Doemaarwat

09/03/2019 08:56:19
Quote Anchor link
Ozzie PHP op 09/03/2019 00:51:06:
De link doet het niet.

Hij had de punt (eind zin) er bij gepakt -> https://secure.php.net/manual/en/functions.arguments.php

Ozzie PHP op 09/03/2019 00:51:06:
Wanneer zou je deze methode gebruiken in plaats van een array


Zelf niet zo vaak. Ik prop het dan ook gewoon liever meteen in een array. Waar ik het nog wel eens gebruik is als ik de aanroep van een functie / creëren van een object in een wrapper ("factory") stop en de parameters eigenlijk 1:1 doorgeef aan de achterliggende functie / constructor (minus de 1e bijvoorbeeld). Omdat je dan bijvoorbeeld de call naar de basis al uitgeschreven hebt (gewoon als losse parameters) is het wel prettig / vanzelfsprekend om dat naar de wrapper toe ook te doen.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.