2017-12-08 29 views
0

私は内部に3つの配列からなる多次元配列を持っています。私の最小実行可能な例以下を参照してください。多次元配列からjsonファイルを作成する

<?php 

$array1 = array("Bitcoin", "Ethereum", "Bitcoin Cash"); 
$array2 = array("BTC", "ETH", "BTC"); 
$array3 = array("10000", "3000", "6666"); 


//Multi Dimensional Array 
$multi = array($array1, $array2, $array3); 
print_r($multi); 

foreach($multi as $k =>$a){ 
    $multi[$k] = json_decode(json_encode($a)); 
} 

print_r($multi); 

// $json_data = json_encode($multi); 
file_put_contents('data/myfile.json', $multi);  

をしかし、私は私の出力ファイルに次のような出力が得られます。

ArrayArrayArray 

任意の提案をどのように次のようなデータを取得する:

{ 
"Bitcoin", 
"BTC", 
"10000" 
}, 
{ 
"Ethereum", 
"ETH", 
"3000" 
}, 
{ 
"Bitcoin Cash", 
"BTC", 
"6666" 
}, 
+0

3つの配列には常に同じ量の項目が含まれていますか? –

+1

Btw、あなたが望むjsonが無効です。 '[]は配列 '[' item1 '、' item2 '、...]の間に' {key:' value '、key2:' value2 '、...} 'オブジェクトのためのものです。 –

答えて

1

まずオフ、あなたの期待される結果は有効なJSONではありません。 {}ではなく、配列[]である必要があります。

以下は、必要に応じてデータをフォーマットする方法です。
はしかし、それは3つの配列は常に同じ長さであることを前提としています

$array1 = array("Bitcoin", "Ethereum", "Bitcoin Cash"); 
$array2 = array("BTC", "ETH", "BTC"); 
$array3 = array("10000", "3000", "6666"); 

$new = []; 

// Restructure your array to get one item from each array 
foreach ($array1 as $index => $value) { 
    $new[] = [ 
     $value, 
     $array2[$index], 
     $array3[$index] 
    ]; 
} 

$multi = json_encode($new); 

これは、あなたがしたい形式を生成しますが、有効なJSON形式のでしょう:

[ 
    [ 
     "Bitcoin", 
     "BTC", 
     "10000" 
    ], 
    [ 
     "Ethereum", 
     "ETH", 
     "3000" 
    ], 
    [ 
     "Bitcoin Cash", 
     "BTC", 
     "6666" 
    ] 
] 

デモ:https://3v4l.org/39kuA

1
{ 
"Bitcoin", 
"BTC", 
"10000" 
}, 
{ 
"Ethereum", 
"ETH", 
"3000" 
}, 
{ 
"Bitcoin Cash", 
"BTC", 
"6666" 
}, 

有効なJSON形式ではありません。 「{」と「}」はマップ(オブジェクト)ですので、存在しなければならないことを意味する:等「キー値」の列:

{ 
0: "Bitcoin" 
} 

適切なJSONアレイに使用する「[」と「]」。


<?php 
$array1 = array("Bitcoin", "Ethereum", "Bitcoin Cash"); 
$array2 = array("BTC", "ETH", "BTC"); 
$array3 = array("10000", "3000", "6666"); 

//Multi Dimensional Array 
$multi = array(); 
foreach($array1 as $key => $v) { 
    $multi[] = [$array1[$key], $array2[$key], $array3[$key]]; 
} 

file_put_contents('data/myfile.json', json_encode($multi)); 

が生成されます

[["Bitcoin","BTC","10000"],["Ethereum","ETH","3000"],["Bitcoin Cash","BTC","6666"]] 

フォーマットさ:

[ 
    [ 
     "Bitcoin", 
     "BTC", 
     "10000" 
    ], 
    [ 
     "Ethereum", 
     "ETH", 
     "3000" 
    ], 
    [ 
     "Bitcoin Cash", 
     "BTC", 
     "6666" 
    ] 
] 
+0

しかし、それはOPが求めている結果ではありません。 –

+0

タグは 'php jird multidimensional-array'で、 'php weird-format miltidimensional-array'ではありません。彼はPHPをJSON配列にフォーマットしたかったので、私はそれを行いました。適切なフォーマットに関する情報を更新しました。 – JerzySBG

+0

それは私が意味するものではありません。私は無効なjsonの100%ゲームです。しかし、内部のデータを見てください。 OPは、3つのアレイを結合したい。 –

関連する問題