Avatar billede Slettet bruger
22. januar 2010 - 11:23 Der er 5 kommentarer og
1 løsning

Hjælp til datoer i array

Hej
Jeg har problem med at lave et array med datoer?

Mit array får kun en nøgle, hvad gør jeg galt her?, er der en venlig sjæl der kan lige kan puffe mig over denne lille forhindring.
På forhånd tak

modificeret
//function er fra http://www.eksperten.dk/spm/899029,  tak til arne_v
function print_next_weekdays($start, $ant, $weekday, $dg, $slut) {
    $t = strtotime($start);
    global $tat;
    while(date("D", $t) != $weekday)
    {
        $t += (24*60*60);
    }
$tat .= "(" . '"'. date("d-m-Y", $t) . '"';
    for($i = 0; $i < $ant; $i++) {
        $t += ($dg*24*60*60);
$tat .=",";
$tat_check = date("d-m-Y", $t);
$tat = $tat .= '"' . date("d-m-Y", $t) . '"';
if(strtotime($tat_check) >= strtotime($slut)) $ant = 0;
    }
    $tat .= ")";
}

$start_dag = "22-01-2010";    //$_SESSION[start_dag];
$t_tal = strtotime($start_dag);
$start_dag_navn = date("D", $t_tal);
  $weekday = $start_dag_navn;
echo $weekday;
  $dg = "14"; //$_SESSION['termin'];
$slut = "01-11-2010";  //$_SESSION['slutdag'];
$ant = 53;

print_next_weekdays($start_dag, $ant, $weekday, $dg, $slut);

$tat_array = array($tat);  //???????????

echo "<br />";
    print_r($tat_array);
echo "<br />";
echo "<br />";
    echo $tat_array[0];
    echo $tat_array[1];
    echo $tat_array[2];
Avatar billede intenz Novice
22. januar 2010 - 16:32 #1
Som jeg ser det er problemet at din:
$tat_array = array($tat);

ikke har nogen værdi? korrekt?

Hvis det er, er det fordi at $tat kun eksisterer inde i din funktion, du kan derved ikke tilgå den udenfor (og så ikke gemme den i din array).

Hvis du til sidst i din funktion returnerer værdien, vil du kunne gemme udenfor funktionens scope.

Altså erstatte:
    $tat .= ")";
}

med:
    $tat .= ")";
    return $tat;
}

Så skal du lige gemme variabel her også:
print_next_weekdays($start_dag, $ant, $weekday, $dg, $slut);

ved at erstatte det med:
$tat = print_next_weekdays($start_dag, $ant, $weekday, $dg, $slut);
Avatar billede intenz Novice
22. januar 2010 - 16:37 #2
Når jeg kigger igen kan se, at du allerede har:
global $tat;

i din funktion, hvilket burde gøre det samme.

Din kode er ikke så let læselig, hvad er det du gerne vil have i dit array?
Avatar billede Slettet bruger
22. januar 2010 - 17:08 #3
Jeg skal ha' terminerne som array, så jeg kan tilgå dem med:
$tat_array[0]; bliver 22-01-2010
$tat_array[1];  -    05-02-2010
$tat_array[2]; osv

men mine forsøg gir kun en enkel nøgle, nemlig nul(0) med hele pivtøjet!?
Array ( [0] => ("22-01-2010","05-02-2010","19-02osv.osv.....



kør koden, så kan du selv se hvad den gør..
Avatar billede intenz Novice
22. januar 2010 - 18:59 #4
Hvis vi nu tager udgangspunkt i den kode du fik fra:
http://www.eksperten.dk/spm/899029

kan man rette den fra at den udskriver dato til at den sætter det i et array relativt nemt ved at ændre den til:
function print_next_weekdays($start, $n, $weekday) {
    global $tat;
    $t = strtotime($start);
    while(date("D", $t) != $weekday)
    {
        $t += (24*60*60);
    }
    $tat[] = date("Y-m-d", $t;
    for($i = 0; $i < $n; $i++) {
        $t += (7*24*60*60);
        $tat[] = date("Y-m-d", $t);
    }
}



Den burde give dig dine dage i et array.

Du har selv sat noget ekstra variabler ind i funktionen, jeg ved ikke hvad de skal bruges til?
Avatar billede Slettet bruger
22. januar 2010 - 19:21 #5
selvfølgelig mand!

kan kun ryste på hovedet af mig selv -:)
jeg takker mange gange, læg et svar, så er der point.

if(strtotime($tat_check) >= strtotime($slut)) $ant = 0; = er bare et check for at få den ud af løkken ved slutdagen, virker fint.
Avatar billede intenz Novice
22. januar 2010 - 19:37 #6
Super :)
Held og lykke med det
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester