2017-09-15 16 views
2

以内に、私は次のようなJSONデータを生成しようとしている:PHP JSONエンコーディングは、foreachループ

[ 
    { 
     "ID": "A1000", 
     "name": "John Simpson", 
     "serialID": "S41234", 
     "tagID": "ABC6456" 
    }, 
    { 
     "ID": "B2000", 
     "name": "Sally Smith", 
     "serialID": "B5134536", 
     "tagID": "KJJ451345" 
    }, 
    { 
     "ID": "A9854", 
     "name": "Henry Jones", 
     "serialID": "KY4239582309", 
     "tagID": "HYG452435" 
    } 
] 

次のようになりますPHP foreachループ内から:

foreach($records as $record) { 

     $ID = $record->getField('propertyID'); 
     $name = $record->getField('assignedName'); 
     $serialID = $record->getField('serial'); 
     $tagID = $record->getField('tag'); 

    } 

私が使用して試してみました:

$arr = array('ID' => $ID, 'name' => $name, 'serialID' => $serialID, 'tagID' => $tagID); 

ループ内の各レコードに対して機能しますが、tを結合する構文は機能しません一緒に単一のJSONデータ文字列に裾?

+2

だけ – Ghost

答えて

4

問題: -あなたのある過書き込みの問題を引き起こすloop.Thatあなた$arr変数foreach()内の各時。

ソリューション: -代わりの過書き込み、以下のように配列に値を割り当てる: -

$arr = []; //create empty array 

foreach($records as $record) { 

    $arr[] = array(
       'ID' => $record->getField('propertyID'); 
       'name' => $record->getField('assignedName'); 
       'serialID' => $record->getField('serial'); 
       'tagID' => $record->getField('tag') 
      );//assign each sub-array to the newly created array 
} 
echo json_encode($arr); 
+0

正確で素敵なソリューションを追加し、 '$ arr'各反復を上書きしません。感謝します。 –

+0

@SahilGulatiに.. +1のおかげで '[]' –

0

それを集約配列のいくつかの種類にレコードを追加してjson_encode

$items = []; 
foreach($records as $record) { 
    $items[] = [ 
     'ID' => $record->getField('propertyID'), 
     'name' = $record->getField('assignedName'), 
     'serialID' => $record->getField('serial'), 
     'tagID' => $record->getField('tag'), 
    ]; 
} 

echo json_encode($items); 
0

これを試してみてください:

$data= array(); 
foreach($records as $record) { 

$data[] = array(
     'ID' => $record->getField('propertyID'); 
     'name' => $record->getField('assignedName'); 
     'serialID' => $record->getField('serial'); 
     'tagID' => $record->getField('tag') 
     ); 
    } 

echo json_encode($data); 

説明:配列を作成し、すべての値をループ内の数値インデックスの1つに入れてください。json_enccode()です。

0

あなたはこのためにarray_map()ようなものを使用することができます

$result = array_map(function ($record) { 
    return [ 
     'ID'  => $record->getField('propertyID'), 
     'name'  => $record->getField('assignedName'), 
     'serialID' => $record->getField('serial'), 
     'tagID' => $record->getField('tag'), 
    ]; 
}, $records); 

echo json_encode($result); 

は、この情報がお役に立てば幸い!

0
<?php 
$ArrayName = array(); 

foreach($records as $record) { 

     $ID = $record->getField('propertyID'); 
     $name = $record->getField('assignedName'); 
     $serialID = $record->getField('serial'); 
     $tagID = $record->getField('tag'); 

$ArrayName[] = array('ID' => $ID, 'name' => $name, 'serialID' => $serialID, 'tagID' => $tagID); //assign each sub-array to the newly created array 

    } 
echo json_encode($ArrayName); 

? 

> Blockquote 
0

このコードがお手伝いします:

<?php 
$resultArray = array(); 

foreach($records as $record) 
{ 
     $newResultArrayItem = array(); 
     $newResultArrayItem['ID'] = $record->getField('propertyID'); 
     $newResultArrayItem['name'] = $record->getField('assignedName'); 
     $newResultArrayItem['serialID'] = $record->getField('serial'); 
     $newResultArrayItem['tagID'] = $record->getField('tag'); 

     $resultArray[] = $newResultArrayItem; 
} 

$encodedArray = json_encode($ArrayName); 

echo $encodedArray; 

?>