2016-06-12 12 views
0

PHPオーダーフォームで作業しています。私は配列のリストを調べ、foreachループに似ているが、指定された配列数だけ表示したい。指定された数の配列を実行するPHP

$PRODUCTS = array(
// product abbreviation, product name, unit price 
// follow valid name/ID rules for product abbreviation 
array('prod1', '20" 4:3 (1600 x 1200)', 150), 
array('prod2', '24" 16:9 (1920 x 1200)', 250), 
array('prod3', '32" 16:9 (1920 x 1080)', 300), 
array('prod4', '40" 16:9 (1920 x 1080)', 450), 
array('prod5', '46" LCD 16:9 (1920 x 1080)', 600), 
array('prod6', '55" LCD 16:9 (1920 x 1080)', 800), 
array('prod7', 'Floor Stand (with rental of monitor only)', 100), 
); 

foreach($PRODUCTS as $product) { 
    list($abbr, $name, $price) = $product; 

    // quantity text input 
    $qty_el = $frm->addInput('text', $abbr . '_qty', 0, 
     array('size'=>4, 'class'=>'cur', 'pattern'=>'[0-9]+', 'placeholder'=>0, 
       'onchange'=>'getProductTotal(this)', 
       'onclick'=>'checkValue(this)', 'onblur'=>'reCheckValue(this)')); 

    // total text input 
    $tot_el = $frm->addInput('text', $abbr . '_tot', 0, array('readonly'=>true, 'size'=>8, 'class'=>'cur')); 

    // price hidden input 
    $price_el = $frm->addInput('hidden', $abbr . '_price', $price); 

    $tbl->addRow(); 
     $tbl->addCell($name); 
     $tbl->addCell('$' . number_format($price, 2) . $price_el, 'cur'); 
     $tbl->addCell($qty_el, 'qty'); 
     $tbl->addCell($tot_el); 
} 

どのようにして最初の3つのアレイのみを印刷するのですか?私はこれを行うために探している理由は、説明のヘッダーを注文フォームでいくつかの製品を分割することです - これを行うより良い方法がありますか?必要に応じて、より多くのコードを提供することができます。

ありがとうございます!

+0

PRODUCTSアレイの3ループ後にループを停止したいですか? – IqbalBary

+0

ええ、私は本当にそれを行うより良い方法を考えることができません。なぜなら、PRODUCTS配列内のすべてが合計/合計関数に供給されているので、別々の配列を作成したくないからです。しかし、私はいくつかの製品の間にヘッダーを貼り付けたい。 – sixfiveoh

+0

'break'文を使用してループを停止します。更新コードの答えを確認してください。 – IqbalBary

答えて

0

ごく一部の製品では、必要に応じてループを解除してください。ループを停止するには、breakを使用してください。

$PRODUCTS = array(
// product abbreviation, product name, unit price 
// follow valid name/ID rules for product abbreviation 
array('prod1', '20" 4:3 (1600 x 1200)', 150), 
array('prod2', '24" 16:9 (1920 x 1200)', 250), 
array('prod3', '32" 16:9 (1920 x 1080)', 300), 
array('prod4', '40" 16:9 (1920 x 1080)', 450), 
array('prod5', '46" LCD 16:9 (1920 x 1080)', 600), 
array('prod6', '55" LCD 16:9 (1920 x 1080)', 800), 
array('prod7', 'Floor Stand (with rental of monitor only)', 100), 
); 

$i = 0; 

foreach($PRODUCTS as $product) { 
    list($abbr, $name, $price) = $product; 

    // quantity text input 
    $qty_el = $frm->addInput('text', $abbr . '_qty', 0, 
     array('size'=>4, 'class'=>'cur', 'pattern'=>'[0-9]+', 'placeholder'=>0, 
       'onchange'=>'getProductTotal(this)', 
       'onclick'=>'checkValue(this)', 'onblur'=>'reCheckValue(this)')); 

    // total text input 
    $tot_el = $frm->addInput('text', $abbr . '_tot', 0, array('readonly'=>true, 'size'=>8, 'class'=>'cur')); 

    // price hidden input 
    $price_el = $frm->addInput('hidden', $abbr . '_price', $price); 

    $tbl->addRow(); 
     $tbl->addCell($name); 
     $tbl->addCell('$' . number_format($price, 2) . $price_el, 'cur'); 
     $tbl->addCell($qty_el, 'qty'); 
     $tbl->addCell($tot_el); 
    if($i==3){ //you can use any number 
    break; 
    }$i++; 
} 
+0

ループが途切れた場所を拾う方法がありますか?もっと私がこれを考えるほど、私は手動で各行を書き出さなければならないかもしれないようです。 – sixfiveoh

関連する問題