2016-03-22 16 views
0

私は次のJSONファイルをサーバーに保存しています。私はこのJSONファイルに別のオブジェクトを追加するためにPHPスクリプトを使用しています。PHPを使用してJSONオブジェクトを.jsonファイルに挿入

testjson1.json:

{ 
"feed": 
[ 
{ 
"id": "1", 
"name": "Ram", 
"status": "Very good restaurant!! water tastes soo good :)" 
} 
] 
} 

次のように私はオブジェクトを追加するために使用するPHPは次のとおりです。

<?php 
$data=array("2","new","not so good"); 
$inp = file_get_contents('testjson1.json'); 
$tempArray = json_decode($inp); 
array_push($tempArray, $data); 
$jsonData = json_encode($tempArray); 
file_put_contents('testjson1.json', $jsonData); 
?> 

しかし、PHPファイルは述べているエラーを示しています。

警告:array_push()は、パラメータ1が配列になることを期待しています。オブジェクトは/home/u160481344/public_html/jsonfinder.php 5行目に指定されています

とjsonファイルが1行に崩壊します。どうすればこの問題を解決できますか? documentation 1として

答えて

1

第2ブール型パラメータTRUEを追加すると、返されたオブジェクトは連想配列に変換されます。この

$tempArray = json_decode($inp,true); 
2

、あなたがjson_decode

json_decode($tempArray, true); 

からオブジェクトが第二ブールパラメータを追加したくない場合。試してみてください。

1

PHP関数json_decode()は、JSON文字列をデコードして

だけ

$tempArray = json_decode($inp); 

この行を置き換え、それはJSONエンコードされた文字列を取り、PHP変数に変換します。

下記のスクリプトは、オブジェクトデータ型のPHP変数を返します。

$inp = file_get_contents('testjson1.json'); 
$tempArray = json_decode($inp); 

しかし、PHP関数array_push()は、入力パラメータとして配列のみを受け入れます。 ブールのタイプは、json_decode($json_string, TRUE)のようなjson_decode()関数に渡すことができ、連想配列のPHP変数をデコードします。 あなたはこのようなあなたのコードを更新する必要があります -

$inp = file_get_contents('testjson1.json'); 
$tempArray = json_decode($inp, TRUE); 

以上の基準については、このリンクPHP関数json_decode()を参照してください。

関連する問題