Hallo allemaal, ik zit met de volgende vraag:
Deze regel geeft een waarschuwing in mijn code. (Warning = sizeof(): Parameter must be an array or an object that implements Countable in)
for($i=0; $i<sizeof($gpx_files); $i++) {
HTML_gpx::viewBatchImportTableRow($i+1, $gpx_files[$i]);


Enig zoekwerk doet mij vermoeden dat er "is_array" voor moet komen, maar hoe precies snap ik niet.

Jan
Een controle of het een array is, is wel gewenst. Maar waar komt die variabele $gpx_files vandaan?

Het is dus geen array/object.
Een paar regels erboven vermoed ik.
//  batchimport GPX  bestand //
function batchimportGPX() {
	global $DEBUG, $cfg;
    HTML::heading(_MENU_GPX_BATCH_IMPORT, 3);
    if(!$cfg['public_host'] || check_password($cfg['admin_password'])) {
	    echo "<script src='./libraries/import.js'></script>\n";
	    // set current upload dir and scan it for gpx files
		$dir = GPX_UPLOAD_DIR;
		$gpx_files = scan_dir_f($dir, 0, 'FILETYPE_FILE', 'GPX');
		
		HTML::message_r(_TRC_BATCH_IMPORTING_DIR, $dir);
		HTML::message(_TRC_CHOOSE_FILES_FOR_BATCH_IMPORTING);
		if($DEBUG)	print_r($gpx_files);
		
		HTML_gpx::viewBatchImportTableHeader();
		for($i=0; $i<sizeof($gpx_files); $i++) {
			HTML_gpx::viewBatchImportTableRow($i+1, $gpx_files[$i]);
		}
		HTML_gpx::viewBatchImportTableFooter($dir);
		HTML_gpx::viewImportProgress();
    }else {
    	HTML::message(_NOT_AUTH ." ". _DO_LOGIN);
    }
}

Kan je de debug een aanzetten?

NB: Voor scripts hebben we code-tags.
Sorry maar er is geen "code tag" hoor, heb daar al meer naar gezocht hier omdat het mij zeer verbaasde dat die er niet was.
Debug staat aan (volgens mij toch) en geeft deze melding:
Warning: sizeof(): Parameter must be an array or an object that implements Countable in /home/u57968p54877/domains/jan-karina.es/public_html/wandelingen/phpmygpx/gpx.php on line 451


Bedankt trouwens vooor je snelle reacties.
Die tag is er wel. Zie ook de Veelgestelde Vragen. :-)

Als de debug aanstaat moet je een array-boom zien.

sizeof() is een alias voor de functie count() en moet een variabele krijgen waar iets achter zit dat de Countable interface heeft geïmplementeerd. Arrays hebben dat standaard, maar het mag ook een object van eigen class zijn.

PHP klaagt dat $gpx_files niet te tellen is via de Countable interface, het is blijkbaar geen array en verwijst ook niet naar iets anders dat de Countable interface wel heeft. Je zult moeten achterhalen wat er dan wel in $gpx_files zit, bijvoorbeeld met var_dump():

<?php var_dump($gpx_files); ?>

Je moet daarna achterhalen hoe het komt dat $gpx_files niet voldoet aan het criterium van sizeof(), en besluiten hoe je dat op wilt lossen in de code die voorafgaat aan de for-lus.
Bedankt voor je antwoord maar daar moet ik eens heel lang op stureren hoor :-)
De vraag is: als het geen array of object is, wat is het wel?
Die tag is er wel. Zie ook de Veelgestelde Vragen. :-)

Het zou wel gemakkelijker zijn als je gewoon in de editorbalk staat ;-)

[size=xsmall]Toevoeging op 22/10/2020 12:54:50:[/size]

- Ariën - op 22/10/2020 12:42:47

De vraag is: als het geen array of object is, wat is het wel?


Mijn inziens is het de inhoud van een formulier, verder zou ik het echt niet weten.
Daarom moet je die var_dump() toevoegen.
Als je [code] en [/code]-tags toevoegt heb je ook lijnnummer erbij.

En ja, de knop ontbreekt. Er komt wel een keer een moment dat die wordt toegevoegd bij onderhoud aan de site.

Reageren