2016-04-05 9 views
0

jsonファイルの値をフォームから送信された値に置き換えようとしています。 JSONファイルには、以下の通りである:PHPフォームデータでJson値を変更する

{ 
    "meta_titles": { 
     "Just another site": "", 
     "Test test": "", 
     "This is a test post": "", 
     "Hello world!": "" 
    }, 
    "tag_titles": { 
     "Title Test": "", 
     "Recent Posts": "", 
     "Recent Comments": "", 
    } 
} 

そして、PHPの配列:

Array 
(
    [meta_titles-0] => Juste un autre site Wordpress 
    [meta_titles-1] => 
    [meta_titles-2] => Ceci est un test post 
    [meta_titles-3] => Salut le monde 
    [tag_titles-0] => 
    [tag_titles-1] => 
    [tag_titles-2] => 
) 

は返す必要があります。

{ 
    "meta_titles": { 
     "Just another site": "Juste un autre site Wordpress", 
     "Test test": "", 
     "This is a test post": "Ceci est un test post", 
     "Hello world!": "Salut le monde" 
    }, 
    "tag_titles": { 
     "Title Test": "", 
     "Recent Posts": "", 
     "Recent Comments": "", 
    } 
} 

私がこれまで持っているもの:

  $filecontent = file_get_contents($website_directory.'/'.$file_to_read); 
     $oJson = json_decode($filecontent, true); 

     foreach ($_POST as $key => $val) { 
      foreach($oJson->fields as $i => $oVal) { 
        $oJson->fields[$i]->value = $val; 
      } 
     } 
     $json = json_encode($oJson); 
     var_dump($json); 

が試しました多くのことがあったが、しなかったそれを行う方法を見つける。 編集:私はvar_dumpからjsonファイルの内容と全く同じ内容を取得します。

+0

あなたは 'のvar_dump($のJSON)から何を得ましたか;'? – Tomasz

+0

@TomaszTurkowski私は、var_dumpからjsonファイルの内容と全く同じ内容を取得します。 – scrybs

答えて

2
  • trueに設定されている場合json_decodeから第二のparam $oJsonarrayになることを意味します。あなたはarrayのように$oJsonにアクセスします。
  • php配列から番号を取得し、jsonでその位置にあるキーを検索し、配列内のそのキーを更新する必要があります。 jsonではマルチレベル配列を持ち、$_POSTには単一レベルの配列しかありません。あなたがに変更する必要が

 $filecontent = file_get_contents($website_directory.'/'.$file_to_read); 
    $oJson = json_decode($filecontent, true); 

    foreach ($_POST as $key => $val) { 
     list($json_key, $json_no) = explode("-", $key); 
     $json_keys = array_keys($oJson[$json_key]); 
     $oJson[$json_key][$json_keys[$json_no]] = $val; 
    } 
    $json = json_encode($oJson); 
    var_dump($json); 
+0

ダン・ダニエル!!正しい答えでもう一度やり直してください!ありがとう、私が望むように完全に動作します! – scrybs

関連する問題