2011-08-18 17 views
3

私は、次のPHPの配列があります。PHPインデックス付きの配列

array("Apple", "Pear", "Grape", "Orange") 

をそして、私は次のようなJSON出力を取得したいのですが:

[[{"fruit":"Apple"}],[{"fruit":"Pear"}],[{"fruit":"Grape"}],[{"fruit":"Orange"}]] 

JSONは私を混乱させる:(

EDIT 申し訳ありませんが、出力の最後の2つは果実だったはずです、私はそれを修正しました、ごめんなさい。

+0

あなたのJSONオブジェクトの配列の配列です。それは確かにあなたが欲しいものですか? –

+1

どのような配列アイテムが 'fruit'sで、どのラベルが' label'ですか? – salathe

+0

これはCakePHPで$ javascript-> object()が吐き出される形式で、FusionChartsが望むものです。本当の問題は、インデックス付きのPHP配列を、すべての同じキーを持つ関連するPHPに変換する方法でした。 – Pyrite

答えて

2
$fruit = array("Apple", "Pear", "Grape", "Orange"); 
$json = array(); 
foreach($fruit as $f){ 
    $json[][] = array('fruit' => $f); 
} 
echo json_encode($json); 
// [[{"fruit":"Apple"}],[{"fruit":"Pear"}],[{"fruit":"Grape"}],[{"fruit":"Orange"}]] 
+1

OPには2つの「果物」と2つの「ラベル」があります。あなただけの果物をやっている。 –

+0

@Marc:私はそれに気付かなかった。 –

+0

@Marc:OPは彼の質問を固定し、すべてのキーは「果物」です。 –

0

json_encodeは、あなたが(あなたが怠け者なら)

0

http://php.net/json_encodeを探している機能です。その後、

array(array(array('fruit' => 'Apple')), array(array('fruit' => 'Pear')), array(array('fruit' => 'Grape')), array(array('fruit' => 'Orange'))) 

とあなたはアルを書くことができjson_encode()

5

あなたはJSONの出力は、そのように見えるしたい場合、あなたはこのように見えるためにあなたのPHPの値を変更する必要があり

+0

はい、インデックス付きPHP配列を連想PHP配列に変更するにはどうすれば同じキーを使用しますか?それは私が知らないものです。 – Pyrite

+0

OPが望むJSON形式を取得するには、配列は 'array(array( 'fruit' => 'Apple'))、array( 'fruit' => 'Pear')))' –

+0

Fixed 。私はOPがインデックス配列を連想配列に変更することを意味しているのかどうかは分かりませんが、すべて同じキーを使っています。連想配列は、値を配列などにしない限り、キーごとに複数の値を持つことはできません。 –

1

にその配列を渡しますインデックス配列と目的のキー値をとり、必要な構造体を吐き出すittle関数です。

function associativify($array, $key) { 
    $result = array(); 
    foreach ($array as $item) { 
     $result[] = array(array($key => $item)); 
    } 
    return $result; 
} 

$subject = array("Apple", "Pear", "Grape", "Orange"); 
$munged = associativify($subject, 'fruit'); 
$json = json_encode($munged); 

(脇:!私が持っているよりも優れた機能名を選択します)

+0

+1の単語 "associativify" –

+0

私も+1しますが、それはものを歪曲させます。 –

関連する問題