如何使用链接在foreach循环中传递变量

时间:2012-07-24 21:11:06

标签: php xml foreach

我正在尝试创建一个网站,它将加载某个menu.xml文档,该文档是使用foreach循环发送给它的。 foreach循环使用glob来获取目录中的所有XML文档,然后将“name”属性打印到html链接中。

直到我需要传递用于链接到另一个使用它的php文档的XML var,这一直有效。

我首先尝试使用$ _SESSION,但是因为循环会在每次迭代时覆盖$ _SESSION。我也尝试了$ _GET和$ _POST,但是我遇到了与表单相同的问题。

这是我的代码(请忽略任何草率,我是PHP游戏的新手):

foreach(glob("../menus/*xml") as $dom) //grabs each .xml doc in menus/
{
    $menu = simplexml_load_file($dom); //loads the file into $menu
    print "<li>";
    print "<a href = menu.php>{$menu["name"]}</a>"; //links to page menu.php
    print "</li>";
}

我现在需要做的是在单击链接时传递单独加载的XML变量。

我怎么能这样做?

编辑:

menu.xml是一个显示menu.xml内容的页面。

2 个答案:

答案 0 :(得分:1)

这样的东西?

<?php
foreach(glob("../menus/*xml") as $dom) //grabs each .xml doc in menus/
{
  $menu = simplexml_load_file($dom); //loads the file into $menu
?>
<li>
    <a href="menu.php?name=<?php echo $menu["name"] ?>><?php echo $menu["name"] ?></a>
</li>
<?php
}
?>

加载页面时,变量将设置为$_GET['name']

答案 1 :(得分:1)

您可以将DOM存储在关联数组中:

$xml = simplexml_load_file($dom);
$arr_item = array($xml["name"] => $xml);
$menu[] = $arr_item;

创建表单行:

print "<a href = menu.php id='{$xml["name"]}' name='{$xml["name"]}' >{$xml["name"]}</a>";

然后当您想要调用它时,您可以使用其名称来获取$dom

$dom_obj = $menu["name"];