php循环中的项目数取决于另一个循环

时间:2017-06-19 18:53:55

标签: php loops dynamic-variables

我需要弄清楚如何构建一个循环,其数量将取决于之前在另一个循环中选择的数字。

我正在建立一个小型应用程序来订购一些食物。在HTML的第一个循环中,我添加了一个带有php的代码片段,用于选择特定订单的1到5个元素:

<input type="checkbox" class="showHide" value="show">Spinach Dip Platter <span>$17.99 each</span>
<select name="spinach">
<option selected value> -- Select Quantity -- </option><?php
for ($i=0; $i<=5; $i++)
{
?>
<option value="<?php echo $i;?>"><?php echo $i;?></option>
<?php
}
?>
</select>

然后,取决于客户要选择的项目数量,我希望限制另一个特定数量的循环。假设他将在下一个循环(实际上是三个不同面包循环)中选择2个项目,我的客户只能选择2个项目,而不是5个:

<label class="abread">
    <input type="checkbox" class="showHidetwo" value="show" name="alligatorbread">With Alligator or Turtle Bread add $3.00<br>
    <p>Turtle Bread</p>
    <select name="turtle">
        <option selected value> -- Select Quantity -- </option><?php
        for ($i=0; $i<=5; $i++)
        {
            ?>
            <option value="<?php echo $i;?>"><?php echo $i;?></option>
            <?php
        }
        ?>
    </select>
    <p>Aligator Bread</p>
    <select name="alligator">
        <option selected value> -- Select Quantity -- </option><?php
        for ($i=0; $i<=5; $i++)
        {
            ?>
            <option value="<?php echo $i;?>"><?php echo $i;?></option>
            <?php
        }
        ?>
    </select>
    <p>Spider Bread</p>
    <select name="spider">
        <option selected value> -- Select Quantity -- </option><?php
        for ($i=0; $i<=5; $i++)
        {
            ?>
            <option value="<?php echo $i;?>"><?php echo $i;?></option>
            <?php
        }
        ?>
    </select>
</label>

现在数字设置为5,但我想添加一个动态变量,它将依赖于第一个循环(name =“spinach”),它将为以下循环设置限制。有可能吗?

更新:

我尝试过类似的东西:

<label class="tray-items">
    <input type="checkbox" class="showHide" value="show">Spinach Dip Platter <span>$17.99 each</span>
    <p class="spinach">Sourdough</p>
    <select name="spinach_sour">
        <option selected value> -- Select Quantity -- </option><?php
        for ($i=0; $i<=5; $i++)
        {
            ?>
            <option value="<?php echo $i;?>"><?php echo $i;?></option>
            <?php
        }
        $spinach_sour = $_GET["spinach_sour"]; 
        ?>
    </select>
    <p class="spinach">Pumpernickle</p>
    <select name="spinach-pumper">
        <option selected value> -- Select Quantity -- </option><?php
        for ($i=0; $i<=5; $i++)
        {
            ?>
            <option value="<?php echo $i;?>"><?php echo $i;?></option>
            <?php
        }
        $spinach_pumper = $_GET["spinach_pumper"];
        ?>
    </select>
    <label class="abread">
        <input type="checkbox" class="showHidetwo" value="show" name="alligatorbread">With Alligator or Turtle Bread add $3.00<br>
        <p>Turtle Bread</p>
        <select name="turtle">
            <option selected value> -- Select Quantity -- </option><?php
            for ($i=0; $i<=$spinach_pumper; $i++)
            {
                ?>
                <option value="<?php echo $i;?>"><?php echo $i;?></option>
                <?php
            }
            ?>
        </select>
        <p>Aligator Bread</p>
        <select name="alligator">
            <option selected value> -- Select Quantity -- </option><?php
            for ($i=0; $i<=5; $i++)
            {
                ?>
                <option value="<?php echo $i;?>"><?php echo $i;?></option>
                <?php
            }
            ?>
        </select>
        <p>Spider Bread</p>
        <select name="spider">
            <option selected value> -- Select Quantity -- </option><?php
            for ($i=0; $i<=5; $i++)
            {
                ?>
                <option value="<?php echo $i;?>"><?php echo $i;?></option>
                <?php
            }
            ?>
        </select>
    </label>
</label>

基本上我试图在全局get中获取第一个变量,在分配给全局变量之后,我尝试导出值并在第二个循环的第一个循环中重用但是它不起作用。

2 个答案:

答案 0 :(得分:2)

Matto,您可以在for循环中使用变量。

//make sure to declare your variable, but after that you can set the 
value to whatever you like

$var = 0;

for ($i=0; $i<$var; $i++) {
    //code goes here
}

答案 1 :(得分:1)

这是可能的。将您想要的数字保存到变量名称中,您说这将是菠菜,只需将您的for循环更改为:

public class DartsGhentPipeline : IHttpModule
    {
        public void Init(HttpApplication context)
        {
            context.PreRequestHandlerExecute += Context_PreRequestHandlerExecute;
        }

        private void Context_PreRequestHandlerExecute(object sender, EventArgs e)
        {
            HttpApplication application = (HttpApplication)sender;
            HttpRequest request = application.Request;
            HttpResponse response = application.Response;
            Page page = application.Context.CurrentHandler as Page;

            if (page == null)
                return;

            bool requireSSL = page.GetType().GetCustomAttributes(typeof(RequireSSL), true).Length > 0;
            bool isSecureConnection = request.IsSecureConnection;
            string url = string.Format("{0}://www.dartsghent.be{1}", requireSSL ? Uri.UriSchemeHttps : Uri.UriSchemeHttp, HttpContext.Current.Request.RawUrl);

            if (requireSSL != isSecureConnection)
                response.RedirectPermanent(url);
        }

        public void Dispose() { }
    }

确保菠菜有一个值,否则你会遇到问题。