2017-02-25 21 views
2

existing .jsonファイルに配列を追加して、HTML形式で追加したいとします。Array_pushはJSONファイルでnullを返します

これは私のPHPです:

$myFile = "data.json";  
$newArray = array(
    'name'=> $_POST['name'], 
    'date'=> $_POST['date'] 
); 

$fileTmp = file_get_contents($myFile); 
$tempArray = json_decode($fileTmp); 
array_push($tempArray, $newArray); 
$jsonData = json_encode($tempArray); 
file_put_contents($myFile, $jsonData); 

これは私のJSONです:

[ 
    { 
    "name": "name 1", 
    "date": "01.02.2017" 
    }, 
    { 
    "name": "name 2", 
    "date": "05.02.2017" 
    }, 
    { 
    "name": "name 3", 
    "date": "05.03.2017" 
    } 
] 

問題は、私は警告

「array_push()は、パラメータ1があることを想定していましたです配列、nullで指定されたnull ... "

があり、JSONにはnullしかありません。私のコードの私の問題は何ですか?

+2

'$ tempArray = json_decode($ fileTmp、true); array_push($ tempArray、$ newArray); '試してみて –

+0

エラーは、提供されたjsonファイルでも起こりますか? – aghidini

+2

@Anantああ、ありがとう! aghidini問題が解決したが、提供JSON –

答えて

2

json_decode()に2つ目のパラメータを追加し、trueに設定します - 離れて、すでに他の回答で述べたjson_decodeの連想バージョンを使用してから、私は問題があなたの入力JSONファイルであることを考える

$tempArray = json_decode($fileTmp,true); 
array_push($tempArray, $newArray); 
1

あなたは有効なコンテンツをチェックし、JSONが空の場合はデフォルトの配列を作成する必要があります。私は、コードを遵守

$fileTmp = file_get_contents($myFile); 
$tempArray = json_decode($fileTmp, true); 
if (!$tempArray) { 
    $tempArray = array(); 
} 
... 
+0

のdidntは、実際に彼が示した何彼のJSONは有効ですが、このコードは、エラーから防ぐのに便利です。だから+1。 –

+0

@Anant私は彼の入力jsonが有効であることに同意しますが、私は彼が入力jsonが空だった(または存在しない)ときだけ、エラーを最初に受け取っていると思っていました。私は 'json_decode'も' false'を第2引数として有効な配列を生成しなければならないと考えています。オブジェクトの配列を生成するだけですが、OPエラーは最初のパラメータ(配列)に関するものです。 – aghidini

+0

あなたはあまりにもこのエラーになりますオブジェクトの配列に配列をプッシュしようとします(私は思う) –

-1

、それが動作します。 data.jsonファイルの権限を確認してください。

関連する問題