webForumDet fria alternativet

Loopa igenom array i PHP och sätt in rubriker

4 svar · 260 visningar · startad av m_soderlund

m_soderlundMedlem sedan sep. 20026 425 inlägg
#1

Jag har denna array med info till en meny:

<?php

/**
* 
* @version $Id$
* @copyright 2003
*/
// BEGIN MENU_TEXT DEFINTION
// START
$menu_text['st-start'] 							 = 'Start';
$menu_text['st-contact']                         = 'Contact';
$menu_text['st-how']                             = 'How it works';
$menu_text['st-faq']                             = 'FAQ';
// JOIN
$menu_text['jo-joinform'] 						 = 'Join us!';
$menu_text['jo-agreement']                       = 'Terms & Conditions';
$menu_text['jo-privacy']                         = 'Privacy policy';
$menu_text['jo-antispam']                        = 'Anti-spam policy';
// MEMBERS
$menu_text['me-loginform'] 						 = 'Login';
$menu_text['me-logout']                          = 'Logout';
$menu_text['me-stats']                           = 'Statistics';
$menu_text['me-news']                            = 'News';
$menu_text['me-download']                        = 'Download Surfbar';
$menu_text['me-updateform']                      = 'Update profile';
$menu_text['me-forgotuserinfoform']              = 'Lost password?';
$menu_text['me-referralcenter']                  = 'Referral-tips';
$menu_text['me-help']                            = 'Help';
$menu_text['me-banners']                         = 'Banners';
$menu_text['me-history']                         = 'History';
$menu_text['me-deals']                           = 'Special deals';
$menu_text['me-deleteform']                      = 'Cancel account';
// ADVERTISING
$menu_text['ad-info'] 							 = 'Info';
$menu_text['ad-loginform']                       = 'Login';
$menu_text['ad-stats']                           = 'Statistics';
$menu_text['ad-updateform']                      = 'Update campaign';
$menu_text['ad-buyadvertising']                  = 'Buy advertising';
$menu_text['ad-benefits']                        = 'Benefits';
$menu_text['ad-pricing']                         = 'Pricing';
$menu_text['ad-buybanners_agreement']            = 'Advertising agreement';

?>

Jag använder denna kod för att loopa igenom arrayen och skapa länkar:

foreach($menu_text as $key => $val) {
   $menu_var = substr($key, 0, 2);
   $main_var = substr($key, 3);
   echo "<a href=\"index.php?menu_var=$menu_var&main_var=$main_var\">$val</a><br />";
}

Nu är det så att alla länkar skrivs ut med radbrytning mellan, men jag skulle vilja få med rubrikerna Start, Join, Members och Advertising också, samt ha flera radbrytningar mellan varje block av rubrik och dess länkar. Någon som har nån vettig idé?

pimmeMedlem sedan sep. 20011 086 inlägg
#2

Om du tvunget ska ha din konfigfil uppbyggt på samma sätt.

foreach($menu_text as $key => $val) {
   $menu_var = substr($key, 0, 2);
   $main_var = substr($key, 3);
   $tmp[$menu_var][$main_var] = $val;
}
foreach($tmp as $menu_var => $arr)
{
   foreach($arr as $main_var => $var)
   {
      echo "<a href=\"index.php?menu_var=$menu_var&main_var=$main_var\">$val</a><br />";
   }
}

Annars skulle jag föreslå att du gör om konfigfilen till att se ut så här:
$menu_text['st']['start'] = ...
osv.
Och bara köra den sista foreachloopen jag skrev.

Koden är otestad, men jag tror att om den inte funkar så fattar du ungefär hur du ska göra. ;)

m_soderlundMedlem sedan sep. 20026 425 inlägg
#3

Oki doki, tack. *hm, funderar*

MatteMedlem sedan aug. 20002 975 inlägg
#4

Du skulle kunna göra så här:

$rubriker = array('st'=>'START', 'jo'=>'JOIN', 'me'=>'MEMBERS', 'ad'=>'ADVERTISING');

$tmp = "";

foreach($menu_text as $key => $val) {

   $menu_var = substr($key, 0, 2);
   $main_var = substr($key, 3);
   
   if ($tmp != $menu_var) {
      $tmp = $menu_var;
      echo "<h3>{$rubriker[$tmp]}</h3>\n";
   }
   
   echo "<a href=\"index.php?menu_var=$menu_var&main_var=$main_var\">$val</a><br />";

}
m_soderlundMedlem sedan sep. 20026 425 inlägg
#5

Matte: my man. Det där verkar ruggigt bra. Tack!

249 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
123 ms — hämta statistik (db)
124 ms — hämta tråd, inlägg och bilagor (db)