2016-10-18 5 views
0

webserviceのJSON結果があります。これは、テーブルのように作成されています。私は$ json-> field_aを言うカント以来、ヘッダーとPHPの値が分かれている場合のJSON結果の修正方法

{ 
"headers": [ 
    "field_a", 
    "field_b", 
    "field_c" 
], 
"rows": [ 
    [ 
     "value 1", 
     123.212, 
     true 
    ], 
    [ 
     "value 2", 
     542, 
     false 
    ], 
    [ 
     "value 3", 
     342, 
     false 
    ], 
    [ 
     "value 4", 
     5452, 
     false 
    ], 
    [ 
     "value 5", 
     32, 
     true 
    ] 
], 
"totalRows": 5 
} 

これはで動作するように吸うが、代わりに私がループforeachの中に、「行」および$ JSON => $のような配列としてアクセスを行う必要があります参照してください。最初の値を取得するにはobj {$ obj [0]}を使用します。

私のような機能を作成しようとしています:

function fixOutput($jsonResponse){ 
$newResponse = array_combine(array_values($jsonResponse->headers), array_values($jsonResponse->rows)); 
} 

をしかし、それは警告を与える:

警告:array_combine():両方のパラメータは、要素

の同じ番号を持っている必要がありますが

私が正しい解決策を見つけようとする前に、この方法を作成する方法を教えてください。本番環境で使用するJSONレスポンスは、10行から2000行の間になります。あなたが$jsonResponse->headers$jsonResponse->rows配列の内容を結合しようとするのではなく、ヘッダと$jsonResponse->rows配列の各要素を組み合わせているので、事前に

おかげで、みんな:)

答えて

1

あなたの機能が動作しません。 。

私は単純なforeachループを使用します。

$data = []; 
$headers = $jsonResponse->headers; 
$nrOfHeaders = count($headers); 

foreach ($jsonResponse->rows as $row) { 
    $newRow = []; 
    for($i = 0; $i < $nrOfHeaders; $i++) { 
     $newRow[$headers[$i]] = $row[$i]; 
    } 
    $data[] = $newRow; 
} 

dataは、連想配列を含む配列です。この例を少し修正して、代わりにstdClassオブジェクトを使用することができます。

+0

完璧に動作します! :Dありがとう、ピート! –

関連する問題