Nasıl bu dizinin kapalı dayalı bir döngü oluşturmak mı?

2 Cevap php

Ben o zaman bu dizi, bir çek varlığı için ilk test, geçerli bir fiyat dönmek için miktar dan verilerinin değerlendirilmesiyle işlemek için çalışıyorum.

İşte öğelerin sabit tutarlar için giriş hiçbir değişken miktar ile, var.

<input type="checkbox" name="measure[<?=$item->id?>][checked]" value="<?=$item->id?>">
<input type="hidden" name="measure[<?=$item->id?>][quantity]" value="1" />

İşte öğelerin değişken miktarlarda girişler var.

<input type="checkbox" name="measure[<?=$item->id?>][checked]" value="<?=$item->id?>"> 
<input class="item_mult" value="0" type="text" name="measure[<?=$item->id?>][quantity]" />

Yani, sonuçta dizi çok boyutludur. İşte bir çıkış bulunuyor:

Array ( 
[1] => Array ( [quantity] => 1 ) 
[2] => Array ( [quantity] => 1 ) 
[3] => Array ( [quantity] => 1 ) 
...
[14] => Array ( [checked] => 14 [quantity] => 999 ) 
) 

İşte bu dizi ve süreç öğeleri ilk etapta formu off kontrol almak için kullanıyorum döngü bulunuyor. Ben soru aslında nasıl çok boyutlu bir dizi birleştirmek benim koşullu deyimi yapılandıracağım aşağı kaynar sanırım?

foreach($field as $value):  
            if ($value['checked'] == TRUE) { 

                $query = $this->db->get_where('items', array('id' => $value['checked']))->row();

                #Test to see if quantity input is present
                if ($value['quantity'] == TRUE) {
                    $newprice = $value['quantity'] * $query->price;

                    $totals[] = $newprice;  
                }

                #Just return the base value if not
                else { 
                    $newprice = $query->price;

                    $totals[] = $newprice; 
                }

            }
            else { } ?>

            <p><?=$query->name?> - <?=money_format('%(#10n', $newprice)?></p>

        <? endforeach; ?>

Benim soru: nasıl çok boyutlu dizi ile çalışmak benim döngü değiştirebilirim?

2 Cevap

Ben en az 2 hata buldum:

  1. $newprice if ana kapsamı dışında bir beyanı, aksi takdirde money_format çağrıda, bunun dışında avaiable değil koydu
  2. değer isset fonksiyonu ile ayarlanmış ise dizilerin değerlerini kontrol etmeden önce kontrol edin.

Yani kod olacak

foreach($field as $value):
            $newprice = 0;  
            if (isset($value['checked']) && $value['checked'] == TRUE) { 

                $query = $this->db->get_where('items', array('id' => $value['checked']))->row();

                #Test to see if quantity input is present
                if (isset($value['quantity']) &&  $value['quantity'] == TRUE) {
                    $newprice = $value['quantity'] * $query->price;

                    $totals[] = $newprice;  
                }

                #Just return the base value if not
                else { 
                    $newprice = $query->price;

                    $totals[] = $newprice; 
                }

            }
            else { } ?>

            <p><?=$query->name?> - <?=money_format('%(#10n', $newprice)?></p>

        <? endforeach; ?>

Sen bir if deyimi doğrudur karşı karşılaştırarak olmamalıdır. Sadece çıplak ifadesini kullanın ve PHP onun "doğruluk" kontrol edelim:

        if ($value['checked']) { 
            ....
            if ($value['quantity']) {