私の質問は、「基準」を含む事前定義された検索オブジェクトからクエリを構築するために書いています。各検索は、基準オブジェクトの配列である$search->criteria
というプロパティを持っています....PHP - スコープの忍耐 - Codeigniter
Criteria (
"name" => "name", //name of given field to be searched
"expr" => "expr", //could be "<=" ">=" "="
"s_value" => "value" //value to be searched with
)
、適切なクエリにどこ文...
if(count($criteria)) {
foreach($criteria as $crit) {
$this->{$crit['name']}($crit['s_value'],$crit['expr']);
}
}
そして今、最終的にここにループを呼び出している関数で、「名前」は何に対応を追加して、私の検索機能の一部criteriaオブジェクトは$ criteria ['name 「] ....質問の今
function name($value,$expr = '=') {
$this->db->where('specific_field_name '.$expr,$value);
}
..
が、私は内部の変数を作成したい 『単一の実行を超えて持続します』名前を、そのたとえば、私は2つの基準を持っている場合同じ名前で2回実行すると、変数を複数回実行することができます。私はがやりたい何
EDIT
。 私はすべて自分のカウンターが必要なこのようなマルチプル機能を持っています。
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);
}
}
アイデア?
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']]);
}
}
をキーとして名前を持つ$criteria_count
配列を維持し、特定の機能にダウンカウントを通過するメイン検索機能を変更します。
:
$count = 0;
そして名前機能:検索機能の開始時に
。 – jondavidjohn
カウントを渡して返すのはどうですか? – Michael
あなたの答えを説明しますか? – jondavidjohn