【问题标题】:PHP Arrays : echo a range of IDPHP数组:回显一系列ID
【发布时间】:2014-08-22 05:18:01
【问题描述】:

我在页面中显示某些产品时遇到问题, 产品必须按类别排列,ID 101 到 199 一起显示,与其他产品一样,ID 201-299 必须排列在另一个 div 中,因此不同的类别。

这是我的代码片段:

<div id="container">
<div class="wrapper">

<ul class="products"> 
    <?php foreach /*Product IDs 101-199 */
        ($products as $product_id => $product) {
        echo "<li>";    
        echo '<a href="item.php?id=' . $product_id . '">';
        echo '<img src="' . $product["img"] . '"" alt="' . $product["name"] . '" class="imgres">';      
        echo '<p id="det">Dettagli</p>';
        echo "</a>";
        echo "</li>";
 } ?>

</ul>
<ul class="products2">

    <?php /* Here goes the 201-299 items */ 


    ?>  

</ul>

数组文件位于包含目录、列表名称、图像和详细信息中。

第一个产品类别的 ID 从 101 到 199,第二个类别的项目从 201 到 299。

这是更正的代码,显示项目不正确。

<?php foreach                                                               /*Product IDs 101-199 */
        ($products as $product_id => $product) {
            if ($product_id >= 101 || $product_id <= 199 ) {
                echo '<ul class="products">';
                echo "<li>";    
                echo '<a href="item.php?id=' . $product_id . '">';
                echo '<img src="' . $product["img"] . '"" alt="' . $product["name"] . '" class="imgres">';      
                echo '<p id="det">Dettagli</p>';
                echo "</a>";
                echo "</li>";
                echo '</ul>';
            }
            elseif ($product_id >= 201 || $product_id <= 299) {                 /*Product IDs 201-299 */
                echo '<br>';
                echo '<ul class="products2">';      
                echo "<li>";    
                echo '<a href="item.php?id=' . $product_id . '">';
                echo '<img src="' . $product["img"] . '"" alt="' . $product["name"] . '" class="imgres2">';     
                echo '<p id="det">Dettagli</p>';
                echo "</a>";
                echo "</li>";
                echo '</ul>';
            }
                 } ?>

这是产品数组文件:

    <?php $products = array();
$products[101] = array (
    "name" => "Lusso",
    "art" => "02",
    "weight" => "110 g",
    "size" => "45x70",
    "img" => "img/prod/lux1.png",
    "desc" => "Strofinaccio a composizione non determinata (DL. 883/79)",
);
$products[102] = array (
    "name" => "Fatto",
    "art" => "08",
    "weight" => "130 g",
    "size" => "45x65",
    "img" => "img/prod/fat1.png",
    "desc" => "Strofinaccio a composizione non determinata (DL. 883/79)",
);
$products[103] = array (
    "name" => "Rigati",
    "art" => "04",
    "weight" => "80 g",
    "size" => "45x65",
    "img" => "img/prod/rig1.png",
    "desc" => "Strofinaccio a composizione non determinata (DL. 883/79)",
);
$products[104] = array (
    "name" => "Giganti",
    "art" => "05",
    "weight" => "150 g",
    "size" => "45x90",
    "img" => "img/prod/gig1.png",
    "desc" => "Strofinaccio a composizione non determinata (DL. 883/79)",
);

$products[105] = array (
    "name" => "Bandiera",
    "art" => "20",
    "weight" => "120 g",
    "size" => "45x75",
    "img" => "img/prod/ban1.png",
    "desc" => "Strofinaccio a composizione non determinata (DL. 883/79)",
);

$products[106] = array (
    "name" => "Scozzesi",
    "art" => "12",
    "weight" => "90 g",
    "size" => "45x65",
    "img" => "img/prod/sco1.png",
    "desc" => "Strofinaccio a composizione non determinata (DL. 883/79)",
);

/* FILATI */
/*$products2 = array();*/

$products[201] = array (
    "name" => "Filato Super Candido",
    "art" => "50",
    "weight" => "10 g/m",
    "size" => "50pz +",
    "img" => "img/prod/scd1.png",
    "desc" => "Filato a composizione non determinata (DL. 883/79)",
);

$products[202] = array (
    "name" => "Filato Rossino",
    "art" => "50",
    "weight" => "10 g/m",
    "size" => "50pz +",
    "img" => "img/prod/scd1.png",
    "desc" => "Filato a composizione non determinata (DL. 883/79)",
);
 ?>

【问题讨论】:

  • 那么您的实际问题是什么?什么不适合你?你尝试了什么?
  • 现在所有的项目都显示在一起,所以我必须提供一个代码来在“products” div 中显示这些 id 范围,并在名为“products2”的第二个 div 中显示第二个 ID 范围

标签: php html arrays php-5.3


【解决方案1】:

您可以为这两个部分创建两个不同的数组/对象。您可以按照以下代码:

<?php 

$firstArray = array();
$secondArray = array();
foreach ($products as $product_id => $product) {
if($product_id >=101 || $product_id <= 199)
{
     $firstArray[$product_id] = $product;
}
else if($product_id >= 201 || $product_id <= 299 )
{
     $secondArray[$product_id] = $product;
}

 ?>

现在您可以在 products div 中显示 $firstArray,在 products2 div 中显示 $secondArray。

<ul class="products">
<?php foreach($firstArray as $product_id => $product) {
        echo "<li>";    
        echo '<a href="item.php?id=' . $product_id . '">';
        echo '<img src="' . $product["img"] . '"" alt="' . $product["name"] . '" class="imgres">';      
        echo '<p id="det">Dettagli</p>';
        echo "</a>";
        echo "</li>";
} ?>
</ul>

<ul class="products2">
<?php foreach($secondArray as $product_id => $product) {
        echo "<li>";    
        echo '<a href="item.php?id=' . $product_id . '">';
        echo '<img src="' . $product["img"] . '"" alt="' . $product["name"] . '" class="imgres">';      
        echo '<p id="det">Dettagli</p>';
        echo "</a>";
        echo "</li>";
} ?>
</ul>

【讨论】:

  • 谢谢,提供的代码有效,我不知道是否有错误,但它显示了所有内联项目,即使我为 div 设置了另一个类。我将使用当前代码更新第一篇文章。
  • 你能发布你当前的循环吗?
  • 你认为数组文件吗?我已经更新了答案
  • 好的,我已经用您提供的代码替换了我的代码,但是“解析错误:语法错误,第 52 行 ********\products.php 中的文件意外结束(@line 52 我有
【解决方案2】:
<ul class="products"> 
    <?php foreach($products as $product_id => $product):

        if($product_id > 200): ?>

           </ul>
           <ul class="products2">

        <?php endif;?>

        <li>   
        <a href="item.php?id=<?php echo $product_id;?>">
            <img src="<?php echo $product["img"];?>" alt="<?php echo $product["name"];?>" class="imgres">   
            <p id="det">Dettagli</p>
        </a>
        </li>
    <?php endforeach;?>

</ul>

【讨论】:

    猜你喜欢
    • 2013-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-26
    • 1970-01-01
    • 2011-06-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多