1

私はarray_combineいくつかのユーザーの選択の結果を表示するために使用しています。

これは私のループです:

<?php if(get_field('sizes')) { ?>
<?php while(the_repeater_field('sizes')) { ?>
    <?php echo the_sub_field('size'); ?>
    <input type="text" class="quantity" name="quantity[]" value="0">
    <input type="hidden" class="productinput" name="product[]" value="<?php echo the_title(); ?> - <?php echo the_sub_field('size'); ?>">
<?php } ?>
<?php } ?>

これが私が結果を出力する方法です

$quantities = array_combine($_POST['product'], $_POST['quantity']);
foreach ($quantities as $product => $quantity) {
    if ($quantity > 0) {
        $productresults = "$quantity x $product";
    }
}
echo $productresults;

現時点では、最後に入力された数量と製品名のみが出力されます。たとえば、5つの入力を変更すると、5番目のみが表示されます。

変更されたすべての入力を表示するために何が欠けていますか?

4

3 に答える 3

2

以下のコードを使用すると、問題はループ$productresults後に出力さforeachれることでした。そのため、最後に割り当てられた値がエコーされます。

$productresults = "";
$quantities = array_combine($_POST['product'], $_POST['quantity']);
foreach ($quantities as $product => $quantity) {
    if ($quantity > 0) {
        $productresults .= "$quantity x $product ";
    }
}
echo $productresults;
于 2013-02-15T09:20:40.260 に答える
0

結果を配列に保存します。

   $quantities = array_combine($_POST['product'], $_POST['quantity']);
    foreach ($quantities as $product => $quantity) {
        if ($quantity > 0) {
            $productresults[] = "$quantity x $product";
        }
    }
    print_r($productresults);
于 2013-02-15T09:23:09.000 に答える
0
$quantities      = array_combine($_POST['product'], $_POST['quantity']);
$productresults  = array();
foreach ($quantities as $product => $quantity) {
    if ($quantity > 0) {
        $productresults[] = $quantity x $product;
    }
}

echo implode(",", $productresults); // implode it with any thing you need.
于 2013-02-15T09:33:30.903 に答える