PHP "dynamic"菜单

标签 php javascript jquery menu

我刚刚开始使用 PHP(就像今天一样)。 我想使用 jquery 脚本创建一个可包含可变数量项目的可自定义菜单。

当我运行此程序时,出现错误。 错误是:

Parse error: syntax error, unexpected T_VARIABLE in /home/s0urc3/public_html/files01/menu.php on line 5

感谢Chase 他的回答

index.php:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<head>
<?PHP
$script_url="http://files01.s0urc3.ismywebsite.com/jquery/nagging-menu/nagging-menu.js";
$menu_css="http://files01.s0urc3.ismywebsite.com/jquery/nagging-menu/style.css";
$links = array(
    array("url" => "http://www.something1.com", "label" => "something"),
    array("url" => "http://www.something2.com", "label" => "something2"),
    array("url" => "http://www.something3.com", "label" => "something3"),
);
include("menu.php");
?>
<meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"/>
<title></title>
<link rel="shortcut icon" href="favicon.ico" type="image/x-icon"/>
<link rel="stylesheet" type="text/css" href=".css"/>
</head>
<body>
<?=writeMenu($links, $menu_css, $script_url)?>
</body>
</html>

菜单.php:

<?
function writeMenu($links, $script_url, $menu_css){
$menu = '<link href=\"$menu_css\" type=\"text/css\">'
    $menu = '<div id="navi">';
    $menu .= '<div id="menu" class="default">';
    $menu .= '<ul>';

    foreach ($links as $item) {
        $menu .= "<li><a href=\"".$item['url']."\">".$item['label']."</a></li>";
    }

    $menu .= "</ul>";
    $menu .= "</div>";
    $menu .= "<script type=\"text/javascript\" src=\"http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js\" charset=\"utf-8\"></script>";
    $menu .= "<script type=\"text/javascript\" src=$script_url charset=\"utf-8\"></script>";

    return $menu;
}
?>

感谢Chase为他的重新脚本

最佳答案

我想说我对jquery不太熟悉,所以我只会评论你的php使用。

首先,您需要在字符串周围使用引号,如下所示:print("<li><a href=$link_1_url>$link_1_label</a></li>")

然后还有一个问题,为什么你要使用这样的开关,然后复制相同的内容并添加一些内容。您可以按如下方式轻松完成:

if ($items  >= 1)
{
     // print line 1
}

if ($items >= 2)
{
     // print line 2
}
if ($items >= 3)
{
     // print line 3
}

这将确保您不必一遍又一遍地复制相同的内容。可以使用如下的 switch 完成同样的事情,但这段代码更难理解:

$out = "";
switch ($items)
{
case 3:
   $out = "line3" . $out;
case 2:
   $out = "line2" . $out;
case 1:
   $out = "line1" . $out;
   print($out);
   break;
}

如果您想知道它是如何工作的,请仔细查看并记住我只有一个break语句。不过,这更难理解,也不太清楚,所以不建议这样做。 但是,由于每次更改的唯一内容是数字,因此您可以使用 for 循环,它就是为此目的而创建的:

for ($i = 0; $i < $items; $i++)
{
   print("line " . $i);
}

现在你看,这更短、更容易,但非常清晰。

编辑:我错过了一件事:你在那里的一长串网址。编程时要学习的一件事是保留一些整齐的空白,甚至不清楚我们在这里谈论的是一个函数。看看我和你的代码...我的代码是可读的,而你的则不是,这都是由于我插入的空格而你没有...无论如何,你可能使用数组:

function printMenu ($urls)
{
    foreach ($urls as $url)
    {
        print("<a href='" . $url . "'>Link!</a>");
    }
}

// Now you can do:
printMenu(array("url1", "url2", "url3"));

关于PHP "dynamic"菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3326885/

相关文章:

php - 如何将 php 页面转换为 jpeg 文件并下载

php - 以正确的方式访问 stdClass 对象?

javascript - impress.js 中的 Bootstrap 幻灯片

javascript - 根据 react-native 侧边栏菜单中的选择在主视图中显示片段。

jquery - 如何将 jquery ui 图标设置为每个 css 的背景图像?

php - 计算热门话题

php - 如何在cakephp中以逗号值分隔搜索

javascript - Discord.js 机器人在 channel 中发送 10 条消息后发送消息

jquery - 如何使用jquery从选择框中删除选项

javascript - jquery只选择第一个元素