2016-12-13 8 views
1

私は複数のキーと値のペアを示してJSONを持っています。私はループし、それらを表示するために必要なキーと値のペアだけで新しい配列を作成したいと思います。これは私の試みですが、もちろん、私のコードは配列($new_array)を書き直して1つの要素しか持たないようにしています。キー名でJSONからのみ特定のキー/値を取得していないすべての

//SAMPLE JSON 
[{"PropertyId":"555","FloorplanId":"555","FloorplanName":"Studio","Beds":"0","Baths":"1.00","AvailabilityURL","UnitTypeMapping":".058500"},{"PropertyId":"666","FloorplanId":"666","FloorplanName":"Studio","Beds":"0","Baths":"1.00","AvailabilityURL","UnitTypeMapping":".058500"}] 

//GET ALL JSON FROM URL 
$json = file_get_contents('<URL>'); 
$data = json_decode($json); 
// print_r($data); //ALL keys 

//GET JUST THE KEYS I WANT 
$new_array = array("FloorplanName"=>"","Beds"=>"","Baths"=>""); 

// Create new array 
foreach($data as $item) { 
    $new_array['FloorplanName'] = $item->{'FloorplanName'}; 
    $new_array['Beds'] = $item->{'Beds'}; 
    $new_array['Baths'] = $item->{'Baths'}; 
} 

//loop over $new_array 
foreach($new_array as $item) { 
    $item->{'FloorplanName'}; 
    $item->{'Beds'}; 
    $item->{'Baths'}; 
} 

答えて

1

は今、あなたは$new_arrayに連想キーを設定し、あなたのforeachループを通して、あなたのデータたびに上書きされます。代わりに、$new_arrayに項目(サブアレイ)を追加し、データをサブ配列に割り当てる必要があります。これに代えて

//GET JUST THE KEYS I WANT 
$new_array = array("FloorplanName"=>"","Beds"=>"","Baths"=>""); 

// access property of object in array 
foreach($data as $item) { 
    $new_array['FloorplanName'] = $item->{'FloorplanName'}; 
    $new_array['Beds'] = $item->{'Beds'}; 
    $new_array['Baths'] = $item->{'Baths'}; 
} 

あなたは

$new_array = array(); // this array should be empty 

// access property of object in array 
foreach($data as $item) { 
    $new_array[] = array(
    'FloorplanName' => $item->{'FloorplanName'}, 
    'Beds' => $item->{'Beds'}, 
    'Baths' => $item->{'Baths'}, 
); 
} 

はまた、新しい配列をループに、あなたは、最終的なループを変更する必要がある必要があります。

//loop over $new_array 
foreach($new_array as $item) { 
    echo $item['FloorplanName']; 
    echo $item['Beds']; 
    echo $item['Baths']; 
} 
+0

はそうありがとう多く。それでおしまい! – Omar

+0

@Omar喜んで助ける;あなたがそれが役に立つとわかったら、答えを受け入れてupvoteを覚えておいてください! ;)私new_arrayをループし、ちょうどすべての値ではなく、キー名を表示 –

+0

。あなたは '$ item - > {'...'}'ではなく、 '$ item ['...']'を使う必要があります。 – Omar

関連する問題