PHP变量在同一页面上传递Foreach

时间:2013-06-28 22:01:05

标签: php html foreach

我已经挣扎了一段时间,我根本无法解决这个问题。这是我的代码:

<?php

$list = array(
"60002" => array("name" => "Cyan Bubble Color", "info" => array("cost" => "200", "code" => "0x50ebec")),
"65002" => array("name" => "Cyan Name Color", "info" => array("cost" => "150", "code" => "0x00cccc")),
);

foreach($list as $id =>$name) {
echo("<td style=\"vertical-align:middle;\">
      <a href=\"item=$id#confirm\" role=\"button\" data-toggle=\"modal\">
      Buy</a></td></tr>");
}?>

<html>
  <div class="modal small hide fade" id="confirm" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
<div class="modal-header">
    <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
    <h3 id="myModalLabel">Log off before purchase</h3>
</div>
<div class="modal-body">
    <p class="error-text"><i class="icon-warning-sign modal-icon"></i>Log off all instances</p>
</div>
<div class="modal-footer">
    <a href="redeem.php?item=<?php echo $id; ?>"><button class="btn btn-danger">Buy</button></a>
</div>

这里的主要问题是foreeach中的$ id与div类链接中的$ id不同。相反,链接是foreach列表的结束值。

2 个答案:

答案 0 :(得分:2)

您已在循环中定义了一个已在外部定义的中使用的变量,但您需要同时访问外部$id和内部$id,对吗?

为了在循环中使用外部$id变量,您应该将循环中跟踪索引的变量重命名为$id以外的其他变量:

foreach($list as $nid =>$name) {
echo("<td style=\"vertical-align:middle;\"><a href=\"item=".$nid."#confirm\" role=\"button\" data-toggle=\"modal\">Buy</a></td></tr>");

<div class="modal small hide fade" id="confirm" tabindex="-1" role="dialog" aria-   labelledby="myModalLabel" aria-hidden="true">
<a href="redeem.php?item=<?php echo $id; ?>"><button class="btn btn-danger">Buy</button></a></div>

<强>更新

根据问题中更新的代码,很明显发生了什么。最初分配给$id的值被foreach循环中的索引赋值覆盖。您仍然可以通过将索引变量重命名为$id

之外的其他内容来解决此问题
<?php
    $id = 'item_id';

    foreach($list as $nid =>$name) {
        echo("<td style=\"vertical-align:middle;\"><a href=\"item=$nid#confirm\" role=\"button\" data-toggle=\"modal\">Buy</a></td></tr>");
    } 
?>

<div class="modal small hide fade" id="confirm" tabindex="-1" role="dialog" aria-   labelledby="myModalLabel" aria-hidden="true">
    <a href="redeem.php?item=<?php echo $id; ?>">
        <button class="btn btn-danger">
            Buy
        </button> 
    </a>
</div>

更新2:

根据澄清评论,您似乎正在尝试将索引变量传递给href="redeem.php?item=?id"。为此,您需要在循环中移动标记的特定部分:

<div class="modal small hide fade" id="confirm" tabindex="-1" role="dialog" aria- labelledby="myModalLabel" aria-hidden="true">

<?php
foreach($list as $nid =>$name) {
    echo("<td style=\"vertical-align:middle;\">
      <a href=\"item=".$nid."#confirm\" role=\"button\" data-toggle=\"modal\">
      Buy</a></td></tr>");
    echo("<a href=\"redeem.php?item=$id\"><button class=\"btn btn-danger\">Buy</button></a>");

} ?>

</div>

答案 1 :(得分:0)

这是你应该怎么做的......你将所有这些链接都带有id,将id传递给data

然后当你点击它时,触发一些Jquery来检索id,并附加到模态的href ....然后打开模态。

像这样......不完全,但它是一个开始。

 <?php
 foreach($list as $id =>$name) {
  echo("<td style=\"vertical-align:middle;\">
  <a href=\"item=$id#confirm\" class='buy' data-id=".$id." role=\"button\" data-toggle=\"modal\">
  Buy</a></td></tr>");
   }?>

然后是一些Jquery

 $('buy').click(function(){
  var id = $(this).data('id');
  // open your modal here, and pass this id, to the href 
  $('#confirmlink').attr('href', 'redeem.php?item='+id);
  //then open/trigger the modal here..

 });