hi uhm ik heb een deel uit mijn script waar ik zeker van weet dat dit kleiner moet kunnen
echter kan ik geen goed voorbeeld vinden van hoe dit moet

ik dacht zelf iets in een richting van een foreach met wildcards ofzo



if($maandtotaalnettoinkas == 0) 
   {
	$maandtotaalnettoinkastext = '-';
   }
else
   {	 
        $maandtotaalnettoinkastext = '€'.number_format($maandtotaalnettoinkas, 2, ',', '').'';
   }
			
			
if($maandtotaalnettoinkasminbank == 0) 
   {
        $maandtotaalnettoinkasminbanktext = '-';
   }
else
   {	 
	$maandtotaalnettoinkasminbanktext = '€'.number_format($maandtotaalnettoinkasminbank, 2, ',', '').'';
   }
			



als er hier een betere manier voor is hoor ik het graag
ik heb ongeveer 20 van deze delen onder elkaar

allemaal beginnen ze in principe met $maand.............
Wat versta jij onder een wildmark?
iets in richting van

foreach ($maand* as $var) {


}

[size=xsmall]Toevoeging op 19/03/2020 11:23:48:[/size]

- Ariën - op 19/03/2020 11:20:31

Wat versta jij onder een wildmark?


wildcards

dus dat het van alles kan zijn
Zo werkt PHP normaliter niet, misschien via eval() maar daar zou ik zeker niet aan beginnen.
Het verschil in de berekening is dat je bij de laatste 'minbank' gebruikt.

Je kan een functie schrijven waarin je in de parameter kan afdwingen dat in je berekening gebruik moet worden gemaakt van $maandtotaalnettoinkasminbank of anders $maandtotaalnettoinkas.
ik snap dat php zo niet werkt daarom ben ik ook op zoek naar iets

ik heb nu zeg maar 20 variabelen met zoiets als
$maand1
$maand2
$maand3
$maand4
$maand5

deze zijn er dus all

nu geeft deze aan mij een waarde terug van 0 of een hoger bedrag
als ik 0 krijg, dan moet er een - komen als output
is het een bedrag dan dus het bedrag

maar het viel mij op dat ik best lange code daarvoor gebruik
en alle 20 zijn bijna hetzelfde
ik zal kijken of iets met een functie kan
maar ik moet nogsteeds dan dus een wildcard meesturen

Dan dwing je in de functie af welke berekening hij moet gebruiken?
Je kan dan dit doen:

echo maandtotaalnettoinkas(42); // Bereken $maandtotaalnettoinkas
echo maandtotaalnettoinkas(42,true); // Bereken $maandtotaalnettoinkasminbank

Dan moet je enkel in je functie even zorgen dat de tweede parameter $maandtotaalnettoinkasminbank afdwingt (if-else), en de gekozen waarde return je dan.



Geen wildcard voor nodig, en dat moet je ook niet. Variabelen kan je immers ook niet delen. Het is een gehele naamgeving.

Waarom zelf je maanden nummeren, terwijl je praktisch met date("n") al de juiste maand-nummer naar voren kan toveren? In een foreach tot 12 kan je dan alles al doorlopen.
ik denk dat je wat door elkaar haald
het zijn geen nummers, Het zijn variabelen van berekende bedragen

indien ik dus een functie zou doen nu zonder wildcard dan
zou ik dus 20 keer die functie moeten opvragen waardoor ik dus juist meer code krijg dan nu
met exact zelfde resultaat als ik nu al heb

ik zoek eigelijk zoiets als

foreach($_POST as $k=>$v) $$k=$v;
deze doet bijna exact hetzelfde met alle post outputs

1 regel om 100 _post een eigen var te geven

[size=xsmall]Toevoeging op 19/03/2020 12:08:08:[/size]

bestaat er zoiets als een lijst met variabelen zetten in een array, maar dat wel nog de bestaande variabelen blijven werken?
En dat het berekende variabelen zijn kan ik dus niet opmaken uit je script. ;-)
Dit kan je prima in een array teruggeven, dan ben je niet hardcoded verbonden aan een vast aantal.

Als je 20 keer een functie opvraagt heb je uiteraard MINDER code, want je hebt één stuk code waarin je zelf bepaalt via argumenten bepaalt welke weg het moet lopen.
En waarom zou je elke $_POST een eigen variabele willen geven? Die hebben al een global (werkt ook in functies/methods), en ook bij POST kan je prima met multidimensionale array's werken.

Om als voorbeeld te geven: Ik heb ooit een rechtensysteem geschreven waarin de velden bijvoorbeeld als volgt waren:
$_POST['rights'][42]['nieuws']['wijzig']

In een soortgelijke boom kon ik dus met enkele foreaches de hele boomstructuur aan rechten uitlezen.
Nu zijn de rechten voor jouw niet van toepassing in deze issue, maar het toont wel het nut aan van een multidimensionale array.
<?php
function maaktext($var)
{ if($var == 0) return '-';
else return '&euro;'.number_format($var, 2, ',', '');
}

$maandtotaalnettoinkastext = maaktext($maandtotaalnettoinkas);
$maandtotaalnettoinkasminbanktext = maaktext($maandtotaalnettoinkasminbank);
?>
wow, nou daar heb ik iets aan :)

ik denk dat ik zelfs de functie output rechtstreeks in de delen ga naarzetten waar ik het nodig heb
dan hoef ik die extra variablen ook niet te doen

so simpel eigelijk :)

hier zie ik heel veel extra mogelijkhheden mee :)
Sylvester vader op 19/03/2020 12:21:28

ik denk dat ik zelfs de functie output rechtstreeks in de delen ga naarzetten waar ik het nodig heb
dan hoef ik die extra variablen ook niet te doen


Kan uiteraard ook:
<?php
echo maaktext($maandtotaalnettoinkas);
?>

Reageren