Door
thomas de vries
op 07-03-2014 09:50
gewijzigd op 07-03-2014 09:50
2.065 views
Goedemorgen mede leden,
Ik zit met een probleem waar ik zo niet uit kom.
Ik ben bezig om een menu te maken deze wordt opgebouwd uit 3 arrays.
<?php
$Link->set_Link(array('news','forms'));
$Link->set_attribute(array('title="Main News"','title="If you have questions use the forums"'));
$Link->set_Name(array('News','Forums'));
?>
Hoe krijg ik het voor elkaar dat de 3 eigenlijks gecombineerd worden.
Ik deed het zo
<?php
public function get_Link() {
foreach($this->Link AS $link) {
$aLink .= $link;
}
foreach($this->Link_attribute AS $Attribute) {
$aAttribute .= $Attribute;
}
}
?>
Dit geeft uiteraard niet het gewenste resultaat ook niet als ik een foreach in een foreach stop.
ik had al gekeken naar array_combine maar hier kun je maar 2 arrays combinen. array_merge geeft ook niet het gewenste resultaat.
Uiteindelijk dient het er zo uit te komen te zien
<?php
public function get_Link() {
return '<a href="'.$this->Link.'" '.$this->link_Attribute.' />'.$this->link_Name.'</a>';
}
?>
Heeft iemand een tip of een tutorial link hiervoor heb eerlijk gezegd nog nooit iets met arrays hoefen te doen maar wil het nu toch een keer gaan proberen. Kant en klare antwoorden heb ik niks aan dan leer ik nog niks.
Bedankt voor de uitleg.
Alleen als ik het op jouw manier doe dan moet een gebruiker alsnog meerdere arrays maken.
Ik probeer het makkelijk te maken voor de gebruiker.
Anders kan een gebruiker net zo goed gewoon plain html gebruiken
<a href="news" title="Main news">News</a>
Wat ik probeer is dat je ook meerdere attributen toe kunt voegen.
dus dat het eigenlijk zo wordt
gebruiker set 2 menu links
news en forums
Dan wil de gebruiker voor news 2 attributen zetten
title en class maar voor forums wil de gebruiker alleen een title zetten
dan wil de gebruiker de namen gaan zetten
News en Forums
foreach($Links AS $link) {
echo '<a href="'.$link['link'].'" '.$link['title'].'>'.$link['name'].'</a>';
}
?>
Dit geeft als output
<a href="news" title="Main News">News</a>
Maar nu wil de gebruiker nog een attribute toevoegen
<?php
$Links = array();
$Links[] = array('link' => 'news', 'title' => 'Main News', 'class' => 'Nav', 'name' => 'News');
?>
Zoals je ziet heeft de gebruiker een css class toegevoegd aan de array
maar nu moet de gebruiker eigenlijk ook in de Functie zelf ook nog dit wijzigen
<?php
foreach($Links as $link) {
echo '<a href="'.$link['link'].'" '.$link['title'].' '.$link['class'].'>'.$link['name'].'</a>';
}
?>
Ik zou het dus graag zo zien dat een gebruiker dus niks hoeft te wijzigen in de method van de Class Menu
Heb je het over iemand die inlogt en deze gegevens invult in een formulier? Of bedoel je met de gebruiker een programmeur die zelf een array moet typen?
Ja ik ben bezig om classes te maken zodat mensen die de classes kunnen gebruiken gewoon de arrays kunnen invullen zonder dat ze eigenlijk diep in de code hoeven te verdiepen.
Stel we hebben een Class Menu
in het menu hebben wij een object links
en 2 methods set_link en get_link
Ik laat alleen de get_Link zien een gebruiker hoeft in principe hier niks in te wijzigen als het goed gaat
<?php
public function get_Link() {
return '<a href="'.$this->link.'" '.$this->link_Attributes.'>'.$this->link_Name.'</a>';
}
?>
echter met de arrays die gemaakt worden moet een gebruiker die gebruikt maakt van de class alsnog de method get_Link wijzigen als een gebruiker een nieuwe attribute toe heeft gevoegd.