PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : PHP array rückgabe


rsoch
2009-01-08, 10:48:00
Guten Morgen,

ich verzweifle hier bald.
bin php-anfänger und übernehme kleinere dinge.
es geht konkret um folgendes:

es soll ein array erzeugt werden dass die jahreszahlen von 1900 - heute(-18) erhält. sodass man sich auf einer webseite anmelden und per dropdownmenü sein geburtsjahr wählen kann.

sieht momentan so aus:

<?php

function datelist($fsk){

$count = 1900;
$mature = (date("Y")-$fsk);

$yob[] = 0;
while($count <= $mature) {
$yob[] = $count;
$count++;
}

foreach($yob as $jahre){
echo $jahre;
}

}
echo datelist(16);

?>

testweise hab ich per foreach mal das ganze array ausgeben lassen. wird auch soweit korrekt angezeigt.

der kollege der das ins html template übernimmt, braucht aber ein komplett gefülltes array ausserhalb der funktion.

ergo soll im quellcode die funktion aufgerufen werden und dann das komplette array ($yob oder $jahre) angesprochen werden können, sodass ne schleife den inhalt herausnimmt.

wie kann ich jetzt das array richtig zurückgeben?


ich dachte so ginge es:

<?php


function datelist($fsk){

$count = 1900;
$mature = (date("Y")-$fsk);

$yob[] = 0;
while($count <= $mature) {
$yob[] = $count;
$count++;
}

foreach($yob as $jahre){
return $jahre;
}

}
echo datelist(16);
echo $jahre[10];

dann kommt aber maximal nur "Array" als anzeige.

Tommes
2009-01-08, 11:13:40
function datelist($fsk = 16) {

$years = array();

for($i = 1900; $i < date("Y") - $fsk; $++i) {
$years[] = $i;
}

return $years;

}

$years16 = datelist(16);

foreach ($years16 as $year) {
echo $year."<br />";
}

rsoch
2009-01-08, 11:31:45
OK danke

jetzt soll ein html template diese dropdownliste basteln.

kann es denn jetzt, ausserhalb der funktion, per schleife auf das array zugreifen?
wenn ich die funktion aufrufe und danach versuche einen wert des arrays aufzurufen klappt es nicht.

<?php
function datelist($fsk) {

$years = array();

for($i = 1900; $i <= date("Y") - $fsk; $i++) {
$years[] = $i;
}

return $years;

}
echo datelist(18);
echo $years[15];
?>



oder hab ich da einen denkfehler`?


tausend dank!!

Tommes
2009-01-08, 11:34:19
Ja hast du. Die Funktion gibt dir ein Array zurück. Auf das kannst du zugreifen:

$years = datelist(16);
echo $years[15];

rsoch
2009-01-08, 11:39:57
Ok also erst über diese Variable die Funktion aufrufen. Du siehst da fehlen noch basics oO

Ich denke aber das sollte jetzt so sein wie es gewünscht ist. Herzlichen Dank :D :D :)

Tommes
2009-01-08, 11:42:31
Ich denke auch. z.B. sowas http://www.php-center.de/de-html-manual/language.variables.scope.html

Kinman
2009-01-08, 11:46:50
Imho ist das ganze sehr umständlich gelöst. Wenn Du nichts gegen PHP/HTML Verschmelzungen hast, würde ich das wie folgt lösen:


<select name="jahr">
<?php
$max = date('Y') - 18;
for ($i = 1900; $i <= $max; $i++) echo('<option value="' . $i . '">' . $i . '</option>');
?>
</select>


mfg Kinman

rsoch
2009-01-08, 11:55:48
die select-felder (da gibts mehrere) sind wohl nicht alle gleich aufbaut, deshalb will unser html-äffchen eine variable mit den jahreszahlen und die engine (?) die dahintersteckt kann diese wohl mit

<!-- begin_loop Bla bla -->
<select value="{!Jahr!}" ... >{!Jahr!}</select>
<!-- end_loop Bla bla -->


in einer Schleife abarbeiten und zu selectfeldern zusammensetzen.

die lösung oben hab ich auch schon hinbekommen und hat auch funktioniert (war sehr stolz :D), wird wie gesagt aber nicht gewünscht. :)

monxoom
2009-01-11, 01:53:10
Wenn noch Bedarf an einer kürzeren Lösung besteht ...


function datelist($fsk=16) {
return range(1900, date("Y") - $fsk);
}

print_r( datelist() );

Tommes
2009-01-11, 10:24:48
Nett, das kannte ich auch noch nicht :)