webForumDet fria alternativet

Loopa igenom array i PHP och sätt in rubriker

PHP

4 svar · 260 visningar · startad av m_soderlund

Medlem sedan sep. 20026 425 inlägg
Frågan#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é?

Medlem 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. ;)

Medlem sedan sep. 20026 425 inlägg
#3

Oki doki, tack. *hm, funderar*

Medlem 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 />";

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

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

249 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
121 ms — deklarationer (db)
0 ms — hämta statistik (cache)
125 ms — hämta tråd, inlägg och bilagor (db)
117 ms — ändringar (db)