PHP - kapsam azim - Codeigniter

0 Cevap php

Benim soru 'kriterleri' içeren önceden tanımlanmış arama nesneleri sorgular oluşturmak için yazıyorum model kaynaklanıyor, her bir arama özelliğine sahiptir $search->criteria bu kriterleri nesneleri bir dizi ....

Criteria (

    "name"    => "name",  //name of given field to be searched
    "expr"    => "expr",  //could be "<=" ">=" "="
    "s_value" => "value"  //value to be searched with

)

ve sorguya nerede ifadeler doğru ekliyor benim arama fonksiyonu parçası ...

    if(count($criteria)) {
        foreach($criteria as $crit) {
            $this->{$crit['name']}($crit['s_value'],$crit['expr']);
        }
    }

Ve şimdi nihayet döngü burada 'adı', aradığını işlevi kriterler $ nesne kriterleri ['name'] olarak belirlemiştir ne olursa olsun gelir ....

function name($value,$expr = '=') {              

    $this->db->where('specific_field_name '.$expr,$value);

}

Şimdi soru için ..

Ben aynı isimde 2 kriter var ve iki kez yürütür, örneğin, ben birden fazla infaz için kapsam var bir değişken korumak istiyorum bu yüzden, tek bir yürütme ötesinde devam edecek bir değişken içinde 'isim' oluşturmak istiyorum.

EDIT

I WANT Ne yapmalı. I have multple functions like this that all need their own counters.

function name($value,$expr = '=') {              
    if(isset($count))        
        $this->db->or_where('specific_field_name '.$expr,$value);
        $count++;
    }
    else {
        $count = 1;
        $this->db->where('specific_field_name '.$expr,$value);
    }
}

Fikirler?

SOLUTION

    if(count($criteria)) {
        $criteria_count = array()
        foreach($criteria as $crit) {
            if(isset($criteria_count[$crit['name']])) {
                $criteria_count[$crit['name']]++;
            }
            else {
                $criteria_count[$crit['name']] = 1;
            }
            $this->{$crit['name']}($crit['s_value'],$crit['expr'],$criteria_count[$crit['name']]);
        }
    }

Tuşları ve aşağı belirli fonksiyonlara sayısını geçen gibi adlarla bir $criteria_count dizisi korumak için ana arama işlevi değişti.

0 Cevap