【问题标题】:PHP Simple loop limit via GET [duplicate]通过 GET 的 PHP 简单循环限制 [重复]
【发布时间】:2012-10-01 09:48:07
【问题描述】:

可能重复:
Why is my PHP multi dimensional array not working?

更新

我希望能够添加 URL category.php?filter=Blue and greencategory.php?filter=Red,然后让我的数组列表仅显示具有这些值的颜色 - 否则它将列出所有数组。

<?php

$array = array(
"1" => array("red", "black", "blue and green"),
"2" => array("orange"),
"3" => array("silver", "gold"),
"4" => array("pruple"),
"5" => array("pink", "yellow"),
"6" => array("black")
);
# no more more edits, loop begins below
# limit the the rows by 3 and break
$data = array_chunk($array, 3);
/*#######################################
 No more edits DO NOT EDIT FURTHER
#######################################*/?>
<?php
foreach ($array as $data):
?>

<div class="item" id="item_<?= $row ?>">
    <div class="itemdata">
    <?php #foreach ($array as $row): ?>
    <?php foreach ($data as $row): ?>
        <?php if (in_array($row, explode(' and ', $_GET['filter']))): ?>
            Product Link = <?=$row?> 
        <?php endif; ?>
    <?php endforeach ?>
    </div>
</div>
<?php endforeach ?>

我已根据以下帖子更新了我的代码。到目前为止,它只循环了两个项目 - 没有任何 filter 应用于 URL

【问题讨论】:

  • 这个&lt;div class="item" id="item_&lt;?=$row?&gt;"&gt; 可能不会达到你的预期。

标签: php arrays loops get


【解决方案1】:

首先,您的数组似乎不正确:

# list of product Ids and their assoc colours
$array = array(
"1" => "red", "black", "blue and green",
"2" => "orange",
"3" => "silver", "gold",
"4" => "pruple",
"5" => "pink", "yellow",
"6" => "black"
);

如果产品 1 有 3 种颜色,它可能应该是:

array (
    1 => array("red", "black", "blue"),
    2 => array("orange"),

等等

【讨论】:

    【解决方案2】:

    我修复了数组和循环,并添加了一个过滤器:

    http://codepad.org/YnafFVP4

    array_chunk 破坏了您的多维数组,因此您不能使用它。如果您能解释您想限制什么,我们也可以提供帮助。

    【讨论】:

    • 代码不能完全运行。第二部分没有完全过滤
    • 我已经用这个代码库更新了我的答案,但没有完全工作。
    • 没错,我做了更多修复,但我不得不取消限制。
    【解决方案3】:

    你的数组应该是这样的

    $array = array(
    "1" => array("red", "black", "blue and green"),
    "2" => "orange",
    "3" =>  array("silver", "gold"),
    "4" => "pruple",
    "5" => " array(pink", "yellow"),
    "6" => "black"
    );
    

    【讨论】:

      【解决方案4】:

      首先,您的数组不正确。 应该是这样的:

      $array = array ("1" => array("red", "black", "blue"),
          //etc
      )
      

      其次,你的 foreach 似乎不正确。

      Foreach 看起来像:

      foreach($array as $key => $value)
      

      foreach($array as $value)
      

      这将导致我们如下:

      <?php foreach ($array as $data): ?>
          // ...
          <?php foreach ($data as $row): ?>
              <a href="/products/<?=$row?>"><img src="/products/<?=$row?>.jpg" /></a>
          <?php endforeach ?>
          //...
      <?php endforeach ?>
      

      你要回答你的第二个问题:

      在 PHP 中,如果将 [] 添加到变量名中,则可以在 url 中传递数组:

      /?color[]=blue&color[]=green
      

      通过$_GET['color[]'];获取它

      作为一般提示:使用{} 块而不是:endforeach。这样你也可以做 IF ELSE 构造:

      <?php
          if($a == $b) {
      
          } else {
      
          }
      ?>
      

      【讨论】:

      • 您的 foreach 参数仍然无效。是foreach($array =&gt; $data),你好像换了。
      • 您还必须将值“blue and green”拆分为“blue”、“green”。这样就可以了。此外,&lt;div class="item" id="item_&lt;?= $row ?&gt;"&gt; 将不起作用,因为此时未设置 $row。您需要在显示 HTML 之前计算过滤器。
      • 这样的?你能帮忙吗? pastebin.com/szhA0azc
      • 差不多。这是我的建议:pastebin.com/MTVX5z3r
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-12-09
      • 2011-07-23
      • 2020-12-20
      • 1970-01-01
      • 1970-01-01
      • 2018-09-07
      • 1970-01-01
      相关资源
      最近更新 更多