2017-06-23 29 views
1

を更新します。私はこのファイルをusers.jsonというjsonファイルに書きたいと思っています。PHPは、私はAPI呼び出しから次のデータを持っているJSONファイルからコンテンツを読み込んで

これに続いて、私は別のAPI呼び出しを行うと、次のデータ受信:

$userId = 5678;$accessToken = 0123;を。

私は、それはこのようになりますようにJSONファイルにこれを追加する:JSONファイルに書き込むため

[ 
    { 
     "userId": "1234", 
     "accessToken": "6789" 
    }, 
    { 
     "userId": "5678", 
     "accessToken": "0123" 
    }, 
] 

私のコードは次のようになります。 $userId$accessTokenは、他の場所で定義されており、正しい値を返すされています

$content = file_get_contents('users.json'); 
$tempArray = json_decode($content, true); 
print_r($tempArray); // this doesn;t show anything as the users.json file contains `null` 

array_push($tempArray, $userId); 
array_push($tempArray, $accessToken); 
$jsonData = json_encode($tempArray); 
file_put_contents('users.json', $jsonData); 

は、残念ながら、これは動作しません。 jsonファイルが表示されたときにそれだけが含まれていますnull誰も私のコードでエラーを見ることができますか?

おかげラウル

+0

あなたはここに、この出力を投稿することができます$ tempArray = json_decode(真$コンテンツ、); print_r($ tempArray);私たちは値を更新する前にあなたのjsonがどのように見えるかを知りたい。 – JYoThI

+0

確かに、私は質問にそれを追加しますが、まだヌルです –

+0

@RaulRodriguez –

答えて

0

あなたは、配列ではなく、オブジェクトを取得するためにjson_decode($content, true);にする必要があります。

array_pushが正しく呼び出されません。またhttp://php.net/manual/fr/function.json-decode.php

を参照してください。

それは次のようになります。array_push($tempArray, ["userid"=>$userId,"accesstoken" => $accessToken]);

+0

私の答えを確認してください。これはまだヌルですが返されます:-S –

+0

@RaulRodriguezあなたの 'array_push'は' array_push tempArray、 ["userid" => $ userId、 "accesstoken" => $ accessToken]); ' – Esteban

+0

ああ!私はあなたの助けに感謝します!まだ 'null' tho –

1

あなたのコードが間違っています。このように修正してください

<?php 
    $content = file_get_contents('users.json'); 
    $tempArray = json_decode($content, true); 
    if(empty($tempArray)){ 
     $tempArray = []; 
    } 
    $newData = [ 
     "userId" => $userId, 
     "accessToken" => $accessToken 
    ]; 
    array_push($tempArray, $newData); 
    $jsonData = json_encode($tempArray); 
    file_put_contents('users.json', $jsonData); 

これは間違いなく動作します。

+0

@CBroeそれは私のために完璧に動作します! –

+1

@CBroe配列をエンコードすると、連想配列がオブジェクトに変換されるので、['x' => 'y']は{"x": "y"}になります。オブジェクトをデコードするとき(phpでは、オブジェクトは連想配列に変換されます(2番目の引数がデコード関数の場合)、Stdclassオブジェクト(falseの場合)。jsonの文字列を配列に変換します。連想配列。したがって、上記のコードは間違いなく動作します。乾杯:) –

0

jsonファイルでエラーが発生するため、すべての機能が動作しないため、配列の最後に,が削除されます。次に、コードの下に試してみてください。

あなたのJSONファイルは次のようになります。

[ 
    { 
     "userId": "1234", 
     "accessToken": "6789" 
    }, 
    { 
     "userId": "5678", 
     "accessToken": "0123" 
    } 
] 

PHP:

$content = file_get_contents('user.json'); 
$tempArray = json_decode($content,true); 
$new_array = array("userId"=>$userId,"accesstoken"=>$accessToken); 
array_push($tempArray, $new_array); 
$jsonData = json_encode($tempArray); 
file_put_contents('user.json', $jsonData); 
関連する問題