jqGrid
複数検索で実装しています。しかし、配列を単一の値にするのに問題があります。これは私のコードです:
//I get this from url giving by jqGrid
$json_data = '{"groupOp":"OR","rules":[{"field":"first_name","op":"eq","data":"ale"},{"field":"last_name","op":"ne","data":"ger"},{"field":"first_name","op":"cn","data":"ros"}]}';
$myArray = json_decode($json_data);
$theArray = $myArray->rules;
foreach($theArray as $tArr)
{
//echoing field
$thisWhere = $tArr->field. " ";
//get operation
if($tArr->op == 'eq') {
$thisWhere .= '= '; //equal
$thisWhere .= '"'.$tArr->data.'" '.$myArray->groupOp.' ';
}
else if ($tArr->op == 'ne') {
$thisWhere .= '<> '; //not equal
$thisWhere .= $tArr->data.' '.$myArray->groupOp.' ';
}
else if ($tArr->op == 'lt') {
$thisWhere .= '< '; //less
$thisWhere .= $tArr->data.' '.$myArray->groupOp.' ';
}
else if ($tArr->op == 'le') {
$thisWhere .= '<= '; //less equal
$thisWhere .= $tArr->data.' '.$myArray->groupOp.' ';
}
else if ($tArr->op == 'gt') {
$thisWhere .= '> '; //greater than
$thisWhere .= $tArr->data.' '.$myArray->groupOp.' ';
}
echo $thisWhere; //echo inside foreach
//return ===> first_name = "ale" OR last_name <> "ger" OR first_name < 20 OR
}
//echo $thisWhere; //return ===> first_name < 20 OR
内部でエコーする場合foreach
は、戻ります。
first_name = "ale" OR last_name <> "ger" OR first_name < 20 OR
外部にエコーする場合foreach
は、戻ります。first_name < 20 OR
私が欲しいのは、エコーするか、ループ$thisWhere
外の変数を取得することだけです。foreach
だから、私は次のステップを行うことができます。