【问题标题】:PHP can't echo for each arrayPHP不能为每个数组回显
【发布时间】:2011-10-11 08:01:51
【问题描述】:

我正在尝试使用 for each 回显一个数组,但它没有显示任何值。我可以回显的唯一值是每个值在一秒钟内。

谁能告诉我我做错了什么?

我想要回应的是价格、商品、描述等,但我什么也没得到。

如果你需要查看数组的输出,这里是http://operationbraveheart.org.uk/jcart/testshop.php

while ($row = $result->fetch()) { 
    $superitem[$row['itemid']][] = $row;
}
foreach($superitem AS $subitem) {
    list($prodid,$item,$size,$description,$price) = $subitem[0];

    if ($count % NUMCOLS == 0) echo "<tr>";  # new row
    echo '<td>'; 
    var_dump($subitem);
    //Your normal code up until the select box...
    echo '<form method="post" action="" class="jcart">
            <fieldset>
                <input type="hidden" name="jcartToken" value="'.$_SESSION['jcartToken'].'" />
                <input type="hidden" name="my-item-id" value="'.$subitem['prodid'].'" />
                <input type="hidden" name="my-item-price" value="'.$subitem['price'].'" />
                <input type="hidden" name="my-item-url" value="http://yahoo.com" />';

    if(count($subitem) > 1) {

        echo '<li><select name="my-item-name" id="foo">';
        foreach($subitem AS $subsubitem) {
            echo "<option value='".$subsubitem['size']."'>".$subsubitem['size']."</option>";
        }
        echo "</select></li>";
    }
    else {
        echo '<input type="hidden" name="my-item-name" value="'.$subitem['item'].'" />'; 
    }
    echo'<li>Price: $<span class="price">'.$subitem['price'].'</span></li>
                <li>
                    <label>Qty: <input type="text" name="my-item-qty" value="1" size="3" /></label>
                </li>
            </ul>

            <input type="submit" name="my-add-button" value="add to cart" class="button" />
        </fieldset>
    </form>';

    echo '</td>';
    $count++;
    $counter++;

    if ($count % NUMCOLS == 0) echo "</tr>\n";  # end row
}

【问题讨论】:

  • $subitem 包含什么?
  • 数据库中的产品数组。我将再次添加 var_dump

标签: php list multidimensional-array for-loop foreach


【解决方案1】:

当前看起来 $subitem 包含一个长度为 1 的数组,其中第一个索引是一行。改变...

$superitem[$row['itemid']][] = $row;

应该是……

$superitem[$row['itemid']] = $row;

还有……

list($prodid,$item,$size,$description,$price) = $subitem[0];

应该是……

list($prodid,$item,$size,$description,$price) = $subitem;

【讨论】:

  • 我改变了它,但现在我有每个产品的下拉列表。你能再看看我的页面,看看发生了什么吗?
  • 您能否进一步解释一下您希望最终页面的外观?
  • 看看我链接到的页面。我暂时撤消了您建议的更改,即使他们给了我价格等,只是这样您就可以看到我想要它的外观。你会看到有一个下拉列表,其余的都是普通表单。
猜你喜欢
  • 1970-01-01
  • 2014-12-08
  • 2013-09-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-09
  • 2013-10-23
相关资源
最近更新 更多