Goedenavond!

Ik ben vanavond een tijdlang bezig geweest met het stoeien met een multidimensionale array. Voor een project ben ik op dit moment bezig met het maken van een class waarin allerlei lay-outfuncties komen.
Op dit moment ben ik een functie voor de FAQ aan het maken, maar ik kom er dus niet uit.

Het idee is als volgt:

<?php
FAQfunction(array(
	array('category'=>'Categorie 1', 'questions'=>array(
		array('question'=>'Vraag 1', 'answer'=>'Antwoord 1'),
		array('question'=>'Vraag 2', 'answer'=>'Antwoord 2'),
		array('question'=>'Vraag 3', 'answer'=>'Antwoord 3'),
		array('question'=>'Vraag 4', 'answer'=>'Antwoord 4'),
		array('question'=>'Vraag 5', 'answer'=>'Antwoord 5')
	)),
	array('category'=>'Categorie 2', 'questions'=>array(
		array('question'=>'Vraag 1', 'answer'=>'Antwoord 1'),
		array('question'=>'Vraag 2', 'answer'=>'Antwoord 2'),
		array('question'=>'Vraag 3', 'answer'=>'Antwoord 3')
	))
));
function FAQfunction($array)
{
	// Hier de function
}
?>


Op dit moment ben ik alleen nog maar aan het foreachen en for-loopen geweest, maar ik kom er niet uit omdat dit toch wel een beetje complex is.

Hopelijk kunnen jullie me helpen :)

[size=xsmall]Toevoeging op 03/04/2017 01:45:29:[/size]

Nog even ter verduidelijking: het betreft dus een FAQ-pagina waarin alle vragen per categorie staan weergegeven.

Dus als volgt:

Categorie 1
Vraag 1 (klik om te openen)
Antwoord 1

Categorie 2
Vraag 1 (klik om te openen)
Antwoord 1

En dat is dus afhankelijk van de input die ik in de function zet, waarvan de invoer later uit de database kan worden gehaald.
Hm.

Waarom gooi je dit alles in een datastructuur? Dit lijkt mij onnodig complex. Kun je niet beter in 1x een uitdraai maken van alle data (middels één query) en dan iets fancy's doen met een JavaScript library zoals jQuery? Scheelt je denk ik een hoop code, queries en programmeerwerk. Keep it simple.
Als eerste schrijf je dat je een class aan het schrijven bent maar ik zie daar in je voorbeeldcode niets van terug. Als je inderdaad een class wilt maken waarin je "allerlei layout functies" wilt zetten dan ben je zeker niet goed bezig. Een class heeft maar één verantwoordelijkheid. Zodra je kunt zeggen dat een class a doet maar ook b doet dan moet je dit gaan opsplitsen in meerdere classen.

Daarnaast ben je niet erg duidelijk over wat je wilt doen met je array. Ik denk dat je een geneste foreach zoekt maar het kan zijn dat ik het mis heb.

<?php
// laten we EERST de functie declareren en dan pas aanroepen. Wel zo netjes.
function FAQfunction($categories)
{
foreach($categories as $category)
{
foreach($category['questions'] as $question)
{
echo $question['question'] . '<br>';
}
}
}

FAQfunction(array(
array('category'=>'Categorie 1', 'questions'=>array(
array('question'=>'Vraag 1', 'answer'=>'Antwoord 1'),
array('question'=>'Vraag 2', 'answer'=>'Antwoord 2'),
array('question'=>'Vraag 3', 'answer'=>'Antwoord 3'),
array('question'=>'Vraag 4', 'answer'=>'Antwoord 4'),
array('question'=>'Vraag 5', 'answer'=>'Antwoord 5')
)),
array('category'=>'Categorie 2', 'questions'=>array(
array('question'=>'Vraag 1', 'answer'=>'Antwoord 1'),
array('question'=>'Vraag 2', 'answer'=>'Antwoord 2'),
array('question'=>'Vraag 3', 'answer'=>'Antwoord 3')
))
));
?>
@Frank Nietbelangrijk: dit werkt, dankjewel!

Reageren