Bertel Lund Hansen
2013-05-16 10:14:23 UTC
Hej allesammen
Jeg har en løkke i PHP, men problemstillingen er helt generel.
Den drejer sig om at jeg i andre løkker gennem et array skal
kunne konstatere om vi har med en given overskrift (head) at
gøre. Jeg løser problemet ved at gennemløbe mit grundarray med
overskrifter og så sammenligne hver gang med en konstant der er
defineret i forvejen. $nr holder rede på hvilket tal vi er kommet
til (det er en enumerator).
foreach ($headers as $nr => $head) {
if ($head==TYPEHEAD) $typenr=$nr;
if ($head==SQMPHEAD) $sqmpnr=$nr;
if ($head==TIMEHEAD) $timenr=$nr;
if ($head==ENGYHEAD) $nrgynr=$nr;
if ($head==FLORHEAD) $flornr=$nr;
if ($head==DISTHEAD) $distnr=$nr;
if ($head==SCORHEAD) $scornr=$nr;
}
Konstanterne er angivet i den rækkefølge de har i arrayet
$headers. Det sikrer at jeg kun behøver ét gennemløb.
Jeg er åben overfor andre forslag til at løse det egentlige
problem, men det er nok vanskeligt på de foreliggende oplysninger
at se andre muligheder. Men jeg prøver lige med noget
eksempelkode:
function check_values ($infoarray) {
$val1 = $infoarray[$typenr];
$val2 = $infoarray[$nrgynr];
return $val1<$limit && $val2>$minimum;
}
function format ($infoarray) {
foreach ($infoarray as $nr => $value) {
if ($nr==$timenr) dateformat($value);
if ($nr==$scornr) numberformat($value);
...
}
}
De viser hvordan jeg bruger de fundne nummerværdier i selve
kodedelen.
Jeg har en løkke i PHP, men problemstillingen er helt generel.
Den drejer sig om at jeg i andre løkker gennem et array skal
kunne konstatere om vi har med en given overskrift (head) at
gøre. Jeg løser problemet ved at gennemløbe mit grundarray med
overskrifter og så sammenligne hver gang med en konstant der er
defineret i forvejen. $nr holder rede på hvilket tal vi er kommet
til (det er en enumerator).
foreach ($headers as $nr => $head) {
if ($head==TYPEHEAD) $typenr=$nr;
if ($head==SQMPHEAD) $sqmpnr=$nr;
if ($head==TIMEHEAD) $timenr=$nr;
if ($head==ENGYHEAD) $nrgynr=$nr;
if ($head==FLORHEAD) $flornr=$nr;
if ($head==DISTHEAD) $distnr=$nr;
if ($head==SCORHEAD) $scornr=$nr;
}
Konstanterne er angivet i den rækkefølge de har i arrayet
$headers. Det sikrer at jeg kun behøver ét gennemløb.
Jeg er åben overfor andre forslag til at løse det egentlige
problem, men det er nok vanskeligt på de foreliggende oplysninger
at se andre muligheder. Men jeg prøver lige med noget
eksempelkode:
function check_values ($infoarray) {
$val1 = $infoarray[$typenr];
$val2 = $infoarray[$nrgynr];
return $val1<$limit && $val2>$minimum;
}
function format ($infoarray) {
foreach ($infoarray as $nr => $value) {
if ($nr==$timenr) dateformat($value);
if ($nr==$scornr) numberformat($value);
...
}
}
De viser hvordan jeg bruger de fundne nummerværdier i selve
kodedelen.
--
Bertel
http://bertel.lundhansen.dk/ http://fiduso.dk/
Bertel
http://bertel.lundhansen.dk/ http://fiduso.dk/