0

私はこれの初心者なので、ばかげた質問をしてすみません、

大量のデータを含むjsonがあり、このファイルをphpで処理する必要があります。(オブジェクトの編集/削除/フィルター)。

私がそれをどのように考えているか:オブジェクトのリストと、jsonからオブジェクトをロードするための関数とそれらを書き戻すための関数を含むクラス。また、リスト上の操作のための他の関数。

私が求めているのは、これを行うための最良の方法です。私の考えは最も単純なものであるため、[編集]、[削除]、[フィルター]をクリックするたびに、loatJsonObjects()を何度もリロードする必要があります。私はこれを行うためのより良い方法です、それは毎回それほど多くの操作をしませんか?ありがとうございました !

4

3 に答える 3

2

だから、私はあなたのためにそれを書くことを本当に試みるべきではありませんが、私は今朝本当に良い気分です。これを試して:

Class Json_Handler {
  private $json_object;
  public function __construct($json_data) {

    if(is_object($json_data) {
      $this->json_object = $json_data;
    }

  }

  public function edit($key, $value) {

    if(isset($this->json_data[$key])) {
     $this->json_data[$key] = $value;
     return $this;
    }
    else {
     return FALSE;
    }

  }

  public function delete($key) {
    if(isset($this->json_data[$key])) {
      unset($this->json_data[$key]);
      return $this;
    }
    else {
      return FALSE;
    }
  }

  public function filter($on = 'key', $filter == NULL) {
     $filtered_objects = array();
     switch($on) {
       case 'key':
       default:
        foreach($this->json_data as $key => $value) {
          if($key == $value) {
            $filtered_objects[] = array($key => $value);
          }
        }
        break;
        case 'value':
         foreach($this->json_data as $key => $value) {
           $filtered_objects[] = array($key => $value);
         }
        break;
     }
     return $filtered_objects;
  }

  public function get_json() {
    return json_encode($this->json_data);
  }

  public function set_json($json) {
    $this->json_data = (is_object($json) ? $json : json_encode($json));
    return $this;
  }

}

その後、次のように使用できます。

$my_json_data = json_decode([...]);
$json = new Json_Handler($my_json_data);
echo $json->edit('test', 'now i have this value')
          ->delete('test')
          ->filter('key', 'bar');
          ->set_json(json_encode($new_json)
          ->get_json();
于 2012-05-15T08:28:29.580 に答える
0

JSONデータを配列にデコードして、グローバル変数またはセッション変数に保存できます。次に、そのセッション変数を編集、削除、フィルター操作に使用します。これが良いかどうかはわかりませんが、これはその方法の1つです。

他の方法を教えてください...

于 2012-05-15T08:21:56.400 に答える
0

データをプレーンなPHPデータオブジェクトに保持し、このオブジェクト内に「処理」ルーチンを含めることができれば、そのデータに対して再実行する必要のある操作の量を減らすことができます。

その後、このオブジェクトをキャッシュして、将来のデータ取得を高速化できます。また、同じデータセットでこれらの高価な操作を再実行する必要はありません(キャッシュされたアイテムの有効期限が切れるまで)。

于 2012-05-15T08:22:40.223 に答える