Ik zit nog steeds met hetzelfde probleem, misschien weet ik niet goed wat je bedoelt met scoping.
Zo?:
<?
function blabla()
{
global $a;
$a = @$event["03-09-2016"][0][2];
return $a;
}
?>
Want ook dat werkt niet (ik neem aan dat ik het niet goed doe).
- Wat betreft de datum meegeven aan de functie, dat gaat niet:
De originele functie print een kalendermaand in een tabel. Met een for-loop voor bijv. 2016 voert hij deze functie 12x uit in de vorm van create_calender(12,2016). Bij iedere dag (bijv. 03-09-2016) wil ik checken of er een evenement is gepland die dag. Maar hij kan het niet lezen. Het probleem zit hem ergens in het bovenstaande voorbeeld. Ik kan het hele geval posten, maar weet niet of je daar meer mee kunt.
- Wat betreft je opmerking over die @: ik zal er iets anders op verzinnen. Maar dat heeft geen effect op de uitvoer (helaas geen melding over lege variabelen in het complete script). En ik heb met opzet ook buiten de functie dezelfde opdracht staan waar die wel werkt.
Bedankt voor je reactie en het meedenken.
[size=xsmall]
Toevoeging op 26/12/2015 23:16:33:[/size]
<html>
<head>
<style>
/* calendar */
table.calendar { border-left:1px solid #999; }
tr.calendar-row { }
td.calendar-day { min-height:160px; font-size:10px; position:relative; } * html div.calendar-day { height:160px; }
td.calendar-day:hover { background:#ece5ff; }
td.calendar-day-np { background:#eee; min-height:160px; } * html div.calendar-day-np { height:160px; }
td.calendar-day-head { font-family:verdana; font-size:12px; background:#ccc; font-weight:bold; text-align:center; width:200px; padding:5px; border-bottom:1px solid #999; border-top:1px solid #999; border-right:1px solid #999; }
div.day-number { font-family:verdana; font-size:14px; background:#999; padding:5px; color:#fff; font-weight:bold; float:right; margin:-5px -5px 0 0; width:20px; text-align:center; }
/* shared */
td.calendar-day, td.calendar-day-np { width:200px; padding:5px; border-bottom:1px solid #999; border-right:1px solid #999; }
/* month + year */
h2 { font-family:verdana; font-size:16px; }
</style>
</head>
<body>
<?php
$item = array();
// $item[] = array("CAT","Datum","Link","","Naam","Vertrekplaats","Afstand","Tijd","Opmerking","Ingeschreven","Staat Datum Vast");
$item[] = array("HL","27-12-2015","http://www.avaquilo.nl/index.php/weg-a-recreatiefalgemeen/w-a-r-artikels/775-oudejaarsloop2015"," ","Valkema Sport Oudejaarsloop","Blijham","HM","","Loopcircuit Schutrups","Ja","Ja");
$item[] = array("HL","02-01-2016","http://www.runnersstadskanaal.nl/index.php?page=691&sid=2"," ","Noorderpoort Nieuwjaarsloop","Stadskanaal","10K","","Loopcircuit Schutrups","Ja","Ja");
$item[] = array("HL","14-02-2016","http://www.groetuitschoorl.nl/algemeen-10-km/"," ","Groet uit Schoorl","Schoorl","10K","","Inschrijven vanaf 24 augustus 2015","","Ja");
$item[] = array("HL","26-03-2016","http://www.loopcircuitdewolden.nl/"," ","Viaductenloop","Zuidwolde","10K","","Loopcircuit De Wolden","","");
$item[] = array("HL","10-04-2016","http://www.nnmarathonrotterdam.nl/"," ","NN Marathon Rotterdam","Rotterdam","M","","","Ja","Ja");
$item[] = array("HL","17-04-2016","http://www.cascaderun.nl/nl/deelnemers-bedrijventeams/individuele-deelnemers/"," ","Cascaderun","Hoogeveen","5EM","","","","Ja");
$item[] = array("HL","05-05-2016","http://www.nachtvangroningen.nl/"," ","Nacht van Groningen","Groningen","10K","","","","");
$item[] = array("HL","07-05-2016","http://www.loopcircuitdewolden.nl/"," ","Crossloop","Zuidwolde","10K","","Loopcircuit De Wolden","","");
$item[] = array("HL","18-05-2016","http://www.acerflanden.nl/erflandenrun/"," ","Erflandenrun","Hoogeveen","10K","","","","");
$item[] = array("HL","22-05-2016","http://www.loopleeuwarden.frl/hardlopen/"," ","Loop van Leeuwarden","Leeuwarden","10K","","Inschrijving geopend","","Ja");
$item[] = array("HL","29-05-2016","www.svveendamatletiek.nl"," ","Valkema Parkstadloop","Veendam","10K","","Loopcircuit Schutrups","Ja","");
$item[] = array("HL","05-06-2016","http://www.loopcircuitdewolden.nl/"," ","Mooi Ruinen Run","Ruinen","10K","","Loopcircuit De Wolden","","");
$item[] = array("HL","08-06-2016","http://www.avaquilo.nl"," ","Oud Alteveerloop","Nieuwe Pekela","10K","","Loopcircuit Schutrups","Ja","");
$item[] = array("HL","12-06-2016","http://run4.educaided.org/"," ","Run4Educaided","Groningen","4EM","","","","Ja");
$item[] = array("HL","19-06-2016","www.svveendamatletiek.nl"," ","Natuurloop Meerwijck","Kropswolde","10K","","Loopcircuit Schutrups","Ja","");
$item[] = array("HL","25-06-2016","http://www.univestadsloop.nl/"," ","Unive Stadsloop","Appingedam","10K","","","","");
$item[] = array("HL","25-06-2016","http://www.runnersstadskanaal.nl"," ","Onstwedderomloop","Onstwedde","10K","","Loopcircuit Schutrups","Ja","");
$item[] = array("HL","10-08-2016","http://www.loopcircuitdewolden.nl/"," ","Alkeloop","Alteveer","10K","","Loopcircuit De Wolden","","");
$item[] = array("HL","20-08-2016","http://www.desnellerakkers.nl/Singelloop/Singelloop.php"," ","Singelloop","Hollandscheveld","10K","","","","");
$item[] = array("HL","25-08-2016","http://www.loopcircuitdewolden.nl/"," ","Wiekloop","De Wijk","10K","","Loopcircuit De Wolden","","");
$item[] = array("HL","03-09-2016","http://www.loopcircuitdewolden.nl/"," ","Dijkhuizenrun","Ruinerwold","10K","","Loopcircuit De Wolden","","");
$item[] = array("HL","03-09-2016","http://www.avaquilo.nl"," ","Jaarmarktloop","Oude Pekela","10K","","Loopcircuit Schutrups","Ja","");
$item[] = array("HL","10-09-2016","http://www.runwinschoten.nl/"," ","Run Winschoten","Winschoten","10K","","","","");
$item[] = array("HL","18-09-2016","http://www.damloop.nl/"," ","Dam tot Damloop","Amsterdam","10EM","","","","Ja");
$item[] = array("HL","25-09-2016","http://www.runnersstadskanaal.nl"," ","Schutrups Run","Exloo","HM","","Loopcircuit Schutrups","Ja","");
$item[] = array("HL","02-10-2016","http://www.loopcircuitdewolden.nl/"," ","Bikkelloop","Zuidwolde","10K","","Loopcircuit De Wolden","","");
$item[] = array("HL","09-10-2016","http://4mijl.nl/"," ","4Mijl van Groningen","Groningen","4EM","","","","Ja");
$item[] = array("HL","23-10-2016","http://zeemijlenloopdelfzijl.nl/"," ","Zeemijlenloop","Delfzijl","6ZM","","","","");
$item[] = array("HL","29-10-2016","http://avdcross.nl/category/nieuws/"," ","Dwingelderveldloop","Dwingeloo","HM","","","","");
$item[] = array("HL","06-11-2016","http://www.runnersstadskanaal.nl"," ","Polderputten Bosloop","Ter Apel","10K","","Loopcircuit Schutrups","Ja","");
$item[] = array("HL","12-11-2016","http://www.avaquilo.nl"," ","Virol Sinterklaasloop","Scheemda","10K","","Loopcircuit Schutrups","Ja","");
$item[] = array("HL","20-11-2016","http://www.zevenheuvelenloop.nl/"," ","Zevenheuvelenloop","Nijmegen","15K","","Inschrijven vanaf 1 juni 2016","","Ja");
$item[] = array("HL","18-12-2016","http://www.avaquilo.nl"," ","Valkema Sport Oudejaarsloop","Blijham","HM","","Loopcircuit Schutrups","Ja","");
/* rearrange the array to event["Datum"][] = array("0CAT","1Link","2Naam","3Vertrekplaats","4Afstand","5Tijd","6Opmerking","7Ingeschreven","8Staat Datum Vast"); to make it searchable */
/* second bracket for double events on a date like on the 3rd of sep */
$event = array();
for($i=0;$i<sizeof($item);$i++):
$event[$item[$i][1]][] = array($item[$i][0],$item[$i][2],$item[$i][4],$item[$i][5],$item[$i][6],$item[$i][7],$item[$i][8],$item[$i][9],$item[$i][10]);
endfor;
$test_1 = '03';
$test_2 = '09';
$test_3 = '2016';
$test_4 = $test_1.'-'.$test_2.'-'.$test_3;
/*************************WERKT PRIMA*********************************/
print '<p>'.@$event[$test_4][0][2].'</p>';
$months = array('Januari','Februari','Maart','April','Mei','Juni','Juli','Augustus','September','Oktober','November','December');
/* draws a calendar */
function draw_calendar($month,$year){
/* draw table */
$calendar = '<table cellpadding="0" cellspacing="0" class="calendar">';
/* table headings */
$headings = array('Zondag','Maandag','Dinsdag','Woensdag','Donderdag','Vrijdag','Zaterdag');
$calendar.= '<tr class="calendar-row"><td class="calendar-day-head">'.implode('</td><td class="calendar-day-head">',$headings).'</td></tr>';
/* days and weeks vars now ... */
$running_day = date('w',mktime(0,0,0,$month,1,$year));
$days_in_month = date('t',mktime(0,0,0,$month,1,$year));
$days_in_this_week = 1;
$day_counter = 0;
$dates_array = array();
/* row for week one */
$calendar.= '<tr class="calendar-row">';
/* print "blank" days until the first of the current week */
for($x = 0; $x < $running_day; $x++):
$calendar.= '<td class="calendar-day-np"> </td>';
$days_in_this_week++;
endfor;
/* keep going with days.... */
for($list_day = 1; $list_day <= $days_in_month; $list_day++):
$calendar.= '<td class="calendar-day">';
/* add in the day number */
$calendar.= '<div class="day-number">'.$list_day.'</div>';
/* make the date */
$list_day < 10 ? $dag = '0'.$list_day : $dag = $list_day;
$month < 10 ? $maand = '0'.$month : $maand = $month;
$jaar = ''.$year;
/* list the events (2nd entry in array) with that key */
$datekey = $dag.'-'.$maand.'-'.$jaar;
/***************EN HIER ZIT HET PROBLEEM**************/
$calendar.='<p>'.@$event[$datekey][0][2].'</p>';
/*********************DOET NIE***********************/
$calendar.= '</td>';
if($running_day == 6):
$calendar.= '</tr>';
if(($day_counter+1) != $days_in_month):
$calendar.= '<tr class="calendar-row">';
endif;
$running_day = -1;
$days_in_this_week = 0;
endif;
$days_in_this_week++; $running_day++; $day_counter++;
endfor;
/* finish the rest of the days in the week */
if($days_in_this_week < 8 && $days_in_this_week > 1):
for($x = 1; $x <= (8 - $days_in_this_week); $x++):
$calendar.= '<td class="calendar-day-np"> </td>';
endfor;
endif;
/* final row */
$calendar.= '</tr>';
/* end the table */
$calendar.= '</table>';
/* all done, return result */
return $calendar;
}
/* well now, we can easily work with request variables: */
/* but let's start with only the last month in 2015 (bc of Schutrups final run) */
for($i=11;$i<12;$i++):
print '<h2>'.$months[$i].' 2015</h2>';
print draw_calendar($i+1,2015);
endfor;
/* and continue with the complete year of 2016 */
for($i=0;$i<12;$i++):
print '<h2>'.$months[$i].' 2016</h2>';
print draw_calendar($i+1,2016);
endfor;
?>
</body>
</html>