2016-12-13 125 views
1

我擁有顯示多個鍵值對的JSON。我想循環並創建一個只包含我想要顯示它們的鍵值對的新數組。這是我的嘗試,但當然,我的代碼正在重寫我的數組($new_array)只有一個元素。只通過鍵名從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很高興幫助;請記住接受答案,如果您發現它有幫助,請立即行動起來! ;) –

+0

我將如何遍歷new_array並只顯示所有值,而不是鍵名 – Omar