-1

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だから、私は次のステップを行うことができます。

4

2 に答える 2

0

implode($theArray); を使用します。配列を単一の文字列に変換するメソッド。これがうまくいくことを願っています。

于 2013-06-17T04:36:09.087 に答える