簡短的版本是我有一個物件陣列,這些物件是從 Web 服務的 JSON 回應中解碼的,盡管我盡了最大努力,但我無法通過索引訪問該陣列中的物件。
我專門將回應解碼為:
$ResponseInfo = json_decode($ResponseBody, false); //give to me as an object
在訪問作為物件陣列的屬性之前,我訪問結果物件的屬性沒有問題。就背景關系而言,它是包含一棟或多棟建筑物的詳細資訊的房產資訊。
我希望能夠通過索引訪問建筑物的詳細資訊,例如:
$ac = $ResponseInfo->building[0]->airConditioning;
這不起作用。我得到一個未定義的索引 0。奇怪的是,array_keys 給了我:
陣列( [0] => 0 )
所以看起來 index 方法應該可以作業,而且它不是什么奇怪的鍵,但可惜它沒有。
print_r 給了我這個:
Array ( [0] => stdClass Object ( [airConditioning] => Central [foundation] => [architecturalStyle] => Ranch/Rambler [yearBuilt] => 1965 [fireplace] => [noOfUnits] => 1 [effectiveYearBuilt] => [sewer] => Municipal/Public [heating] => Central [class] => [comments] => [quarterBaths] => [totalStories] => 1 [kitchens] => 2 [water] => Municipal/Public [classDescription] => [quality] => C- [totalRooms] => 5 [bedrooms] => 3 [condition] => Average [baths] => [threeQuarterBaths] => [halfBaths] => [occupancyStatus] => [fullBaths] => 1 ) ) Array ( [0] => BuildingInformationObject Object ( [airConditioning] => Central [foundation] => [architecturalStyle] => Ranch/Rambler [yearBuilt] => 1965 [fireplace] => [noOfUnits] => 1 [sewer] => Municipal/Public [heating] => Central [totalStories] => 1 [kitchens] => 2 [water] => Municipal/Public [totalRooms] => 5 [bedrooms] => 3 [condition] => Average [halfBaths] => [occupancyStatus] => [fullBaths] => 1 ) )
我也嘗試將陣列分配給一個新變數,但我仍然得到未定義的索引 0。
$BuildingInfo = $ResponseInfo->building;
奇怪的是,起作用的是:
foreach ($BuildingInfo as $ThisBuilding) {
以這種方式,$ThisBuilding-airconditioning(或任何屬性)作業正常。所以我什至嘗試創建一個全新的陣列并手動分配各個屬性,如下所示:
$Buildings = array();
$i = 0;
foreach ($BuildingInfo as $ThisBuilding)
{
$Buildings[$i] = new BuildingInformationObject();
//$Buildings[$i] = $ThisBuilding; //just assigning variable didn't work, so copied properties manually
$Buildings[$i]->airConditioning = $ThisBuilding->airConditioning;
$Buildings[$i]->foundation = $ThisBuilding->foundation;
$Buildings[$i]->architecturalStyle = $ThisBuilding->architecturalStyle;
ETC..
畢竟,嘗試 $Buildings[0]->airConditioning 仍然會給我可怕的索引 0 undefined,即使在新陣列上也是如此。
我什至嘗試了以下形式的東西
echo $data->{'0'}->UserName;
如:
$BuildingInfo->{'0'}->airConditioning;
我在這里找到的。這種方法顯然對舊版本的 PHP 有效,但現在不起作用。
我到底在這里想念什么?謝謝你的幫助。
史蒂夫
編輯:我意識到我可以將 json_decode 更改為簡單地回傳一個陣列,然后將其作為多維陣列處理,但我試圖避免重寫一堆代碼。我最終要處理 JSON 回應中的數百個物件屬性,而我唯一遇到的問題是物件陣列的屬性。
編輯 2:由于它的大小,我不愿意添加它,但作為對評論的回應,這是我正在處理的 JSON。我不想嘗試減少它,因為害怕無意中洗掉導致我的問題的任何東西。如果有更好的方法來分享大量不受干擾的 JSON,請告訴我。
編輯 3:作為對構建陣列不在 JSON 中的評論的回應,我將以下 JSON 從該站點剪切并粘貼到https://jsonformatter.org/json-parser并在樹視圖中查看 JSON。我需要通過索引訪問的構建陣列實際上在這個 JSON 中。
{"success":true,"status":200,"bundle":[{"landUseDescription":"Single Family Residential","zoningDescription":null,"year":2016,"marketLandValue":26930,"numberOfBuildings":1,"lotSizeIrregular":"85 X 138","county":"Butler County","pools":[],"censusTract":"390170118002005","areas":[{"areaSquareFeet":1492,"type":"Living Building Area"},{"areaSquareFeet":1144,"type":"Base Building Area"},{"areaSquareFeet":1140,"type":"Adjusted Building Area"},{"areaSquareFeet":1492,"type":"Zillow Calculated Finished Area"},{"areaSquareFeet":348,"type":"Addition Area"}],"building":[{"airConditioning":"Central","foundation":null,"architecturalStyle":"Ranch/Rambler","yearBuilt":1965,"fireplace":null,"noOfUnits":1,"effectiveYearBuilt":null,"sewer":"Municipal/Public","heating":"Central","class":null,"comments":null,"quarterBaths":null,"totalStories":1,"kitchens":2,"water":"Municipal/Public","classDescription":null,"quality":"C-","totalRooms":5,"bedrooms":3,"condition":"Average","baths":null,"threeQuarterBaths":null,"halfBaths":null,"occupancyStatus":null,"fullBaths":1}],"lotSizeFrontage":null,"parcelID":"112166032","marketValueYear":2014,"lotTopography":"Rocky","ownerName":["ROBERT D SUTTON"],"taxYear":2016,"marketTotalValue":89400,"taxID":"458467","taxExemption":null,"legal":{"phase":null,"tract":null,"city":null,"municipality":null,"section":null,"lot":null,"otherLot":null,"unit":null,"lotDescription":"1141 ENT","district":null,"block":null,"subdivisionName":null,"township":null},"id":"112166032-2016","state":"OH","lotSizeDepth":null,"apn":"R8000-017.000-071","marketImprovementValue":62470,"totalValue":31290,"address":{"zip":"45067","city":"Trenton","zip4":"1117","streetPre":null,"house":"431","unitType":null,"unit":null,"street":"Kenwood","houseExt":null,"streetSuffix":"Ln","state":"OH","streetPost":null,"full":" 431 Kenwood Ln Trenton OH 45067"},"landUseCode":"RR101","landUseGeneral":"RR","coordinates":[-84.465074,39.489885],"zpid":"33237764","fips":"39017","landValue":9430,"zoningCode":null,"lotSizeAcres":0.27,"garages":[],"improvementValue":21860,"taxAmount":1701.78,"lotSizeSquareFeet":11761.2,"url":"api.bridgedataoutput.com/api/v2/pub/assessments/112166032-2016"},{"landUseDescription":"Single Family Residential","zoningDescription":null,"year":2008,"marketLandValue":29380,"numberOfBuildings":1,"lotSizeIrregular":"85 X 138","county":"Butler County","pools":[],"censusTract":"390170118002005","areas":[{"areaSquareFeet":1492,"type":"Living Building Area"},{"areaSquareFeet":1144,"type":"Base Building Area"},{"areaSquareFeet":1140,"type":"Adjusted Building Area"},{"areaSquareFeet":1492,"type":"Zillow Calculated Finished Area"},{"areaSquareFeet":348,"type":"Addition Area"}],"building":[{"airConditioning":"Central","foundation":null,"architecturalStyle":"Ranch/Rambler","yearBuilt":1965,"fireplace":null,"noOfUnits":1,"effectiveYearBuilt":null,"sewer":"Municipal/Public","heating":"Central","class":null,"comments":null,"quarterBaths":null,"totalStories":1,"kitchens":2,"water":"Municipal/Public","classDescription":null,"quality":"C-","totalRooms":5,"bedrooms":3,"condition":"Average","baths":null,"threeQuarterBaths":null,"halfBaths":null,"occupancyStatus":null,"fullBaths":1}],"lotSizeFrontage":null,"parcelID":"112166032","marketValueYear":2008,"lotTopography":"Rocky","ownerName":["ROBERT D SUTTON"],"taxYear":2008,"marketTotalValue":112120,"taxID":"320818","taxExemption":null,"legal":{"phase":null,"tract":null,"city":null,"municipality":null,"section":null,"lot":null,"otherLot":null,"unit":null,"lotDescription":"1141 ENT","district":null,"block":null,"subdivisionName":null,"township":null},"id":"112166032-2008","state":"OH","lotSizeDepth":null,"apn":"R8000-017.000-071","marketImprovementValue":82740,"totalValue":39242,"address":{"zip":"45067","city":"Trenton","zip4":"1117","streetPre":null,"house":"431","unitType":null,"unit":null,"street":"Kenwood","houseExt":null,"streetSuffix":"Ln","state":"OH","streetPost":null,"full":" 431 Kenwood Ln Trenton OH 45067"},"landUseCode":"RR101","landUseGeneral":"RR","coordinates":[-84.465074,39.489885],"zpid":"33237764","fips":"39017","landValue":10283,"zoningCode":null,"lotSizeAcres":0.27,"garages":[],"improvementValue":28959,"taxAmount":1143.66,"lotSizeSquareFeet":11761.2,"url":"api.bridgedataoutput.com/api/v2/pub/assessments/112166032-2008"},{"landUseDescription":"Single Family Residential","zoningDescription":null,"year":2005,"marketLandValue":24950,"numberOfBuildings":1,"lotSizeIrregular":"85 X 138","county":"Butler County","pools":[],"censusTract":"390170118002005","areas":[{"areaSquareFeet":1492,"type":"Living Building Area"},{"areaSquareFeet":1144,"type":"Base Building Area"},{"areaSquareFeet":1140,"type":"Adjusted Building Area"},{"areaSquareFeet":1492,"type":"Zillow Calculated Finished Area"},{"areaSquareFeet":348,"type":"Addition Area"}],"building":[{"airConditioning":"Central","foundation":null,"architecturalStyle":"Ranch/Rambler","yearBuilt":1965,"fireplace":null,"noOfUnits":1,"effectiveYearBuilt":null,"sewer":"Municipal/Public","heating":"Central","class":null,"comments":null,"quarterBaths":null,"totalStories":1,"kitchens":2,"water":"Municipal/Public","classDescription":null,"quality":"C-","totalRooms":5,"bedrooms":3,"condition":"Average","baths":null,"threeQuarterBaths":null,"halfBaths":null,"occupancyStatus":null,"fullBaths":1}],"lotSizeFrontage":null,"parcelID":"112166032","marketValueYear":2005,"lotTopography":"Rocky","ownerName":["ROBERT D SUTTON"],"taxYear":2005,"marketTotalValue":107700,"taxID":null,"taxExemption":null,"legal":{"phase":null,"tract":null,"city":null,"municipality":null,"section":null,"lot":null,"otherLot":null,"unit":null,"lotDescription":"1141 ENT","district":null,"block":null,"subdivisionName":null,"township":null},"id":"112166032-2005","state":"OH","lotSizeDepth":null,"apn":"R8000-017.000-071","marketImprovementValue":82750,"totalValue":37696,"address":{"zip":"45067","city":"Trenton","zip4":"1117","streetPre":null,"house":"431","unitType":null,"unit":null,"street":"Kenwood","houseExt":null,"streetSuffix":"Ln","state":"OH","streetPost":null,"full":" 431 Kenwood Ln Trenton OH 45067"},"landUseCode":"RR101","landUseGeneral":"RR","coordinates":[-84.465074,39.489885],"zpid":"33237764","fips":"39017","landValue":8733,"zoningCode":null,"lotSizeAcres":0.27,"garages":[],"improvementValue":28963,"taxAmount":1631.24,"lotSizeSquareFeet":11761.2,"url":"api.bridgedataoutput.com/api/v2/pub/assessments/112166032-2005"},{"landUseDescription":"Single Family Residential","zoningDescription":null,"year":2002,"marketLandValue":23760,"numberOfBuildings":1,"lotSizeIrregular":"85 X 138","county":"Butler County","pools":[],"censusTract":"390170118002005","areas":[{"areaSquareFeet":1492,"type":"Living Building Area"},{"areaSquareFeet":1144,"type":"Base Building Area"},{"areaSquareFeet":1140,"type":"Adjusted Building Area"},{"areaSquareFeet":1492,"type":"Zillow Calculated Finished Area"},{"areaSquareFeet":348,"type":"Addition Area"}],"building":[{"airConditioning":"Central","foundation":null,"architecturalStyle":"Ranch/Rambler","yearBuilt":1965,"fireplace":null,"noOfUnits":1,"effectiveYearBuilt":null,"sewer":"Municipal/Public","heating":"Central","class":null,"comments":null,"quarterBaths":null,"totalStories":1,"kitchens":2,"water":"Municipal/Public","classDescription":null,"quality":"C-","totalRooms":5,"bedrooms":3,"condition":"Average","baths":null,"threeQuarterBaths":null,"halfBaths":null,"occupancyStatus":null,"fullBaths":1}],"lotSizeFrontage":null,"parcelID":"112166032","marketValueYear":2002,"lotTopography":"Rocky","ownerName":["ROBERT D SUTTON"],"taxYear":2002,"marketTotalValue":102590,"taxID":null,"taxExemption":null,"legal":{"phase":null,"tract":null,"city":null,"municipality":null,"section":null,"lot":null,"otherLot":null,"unit":null,"lotDescription":"1141 ENT","district":null,"block":null,"subdivisionName":null,"township":null},"id":"112166032-2002","state":"OH","lotSizeDepth":null,"apn":"R8000-017.000-071","marketImprovementValue":78830,"totalValue":35907,"address":{"zip":"45067","city":"Trenton","zip4":"1117","streetPre":null,"house":"431","unitType":null,"unit":null,"street":"Kenwood","houseExt":null,"streetSuffix":"Ln","state":"OH","streetPost":null,"full":" 431 Kenwood Ln Trenton OH 45067"},"landUseCode":"RR101","landUseGeneral":"RR","coordinates":[-84.465074,39.489885],"zpid":"33237764","fips":"39017","landValue":8316,"zoningCode":null,"lotSizeAcres":0.27,"garages":[],"improvementValue":27591,"taxAmount":1352.82,"lotSizeSquareFeet":11761.2,"url":"api.bridgedataoutput.com/api/v2/pub/assessments/112166032-2002"},{"landUseDescription":"Single Family Residential","zoningDescription":null,"year":2011,"marketLandValue":29380,"numberOfBuildings":1,"lotSizeIrregular":"85 X 138","county":"Butler County","pools":[],"censusTract":"390170118002005","areas":[{"areaSquareFeet":1492,"type":"Living Building Area"},{"areaSquareFeet":1144,"type":"Base Building Area"},{"areaSquareFeet":1140,"type":"Adjusted Building Area"},{"areaSquareFeet":1492,"type":"Zillow Calculated Finished Area"},{"areaSquareFeet":348,"type":"Addition Area"}],"building":[{"airConditioning":"Central","foundation":null,"architecturalStyle":"Ranch/Rambler","yearBuilt":1965,"fireplace":null,"noOfUnits":1,"effectiveYearBuilt":null,"sewer":"Municipal/Public","heating":"Central","class":null,"comments":null,"quarterBaths":null,"totalStories":1,"kitchens":2,"water":"Municipal/Public","classDescription":null,"quality":"C-","totalRooms":5,"bedrooms":3,"condition":"Average","baths":null,"threeQuarterBaths":null,"halfBaths":null,"occupancyStatus":null,"fullBaths":1}],"lotSizeFrontage":null,"parcelID":"112166032","marketValueYear":2011,"lotTopography":"Rocky","ownerName":["ROBERT D SUTTON"],"taxYear":2011,"marketTotalValue":103050,"taxID":"60577","taxExemption":null,"legal":{"phase":null,"tract":null,"city":null,"municipality":null,"section":null,"lot":null,"otherLot":null,"unit":null,"lotDescription":"1141 ENT","district":null,"block":null,"subdivisionName":null,"township":null},"id":"112166032-2011","state":"OH","lotSizeDepth":null,"apn":"R8000-017.000-071","marketImprovementValue":73670,"totalValue":36068,"address":{"zip":"45067","city":"Trenton","zip4":"1117","streetPre":null,"house":"431","unitType":null,"unit":null,"street":"Kenwood","houseExt":null,"streetSuffix":"Ln","state":"OH","streetPost":null,"full":" 431 Kenwood Ln Trenton OH 45067"},"landUseCode":"RR101","landUseGeneral":"RR","coordinates":[-84.465074,39.489885],"zpid":"33237764","fips":"39017","landValue":10283,"zoningCode":null,"lotSizeAcres":0.27,"garages":[],"improvementValue":25785,"taxAmount":1591.38,"lotSizeSquareFeet":11761.2,"url":"api.bridgedataoutput.com/api/v2/pub/assessments/112166032-2011"},{"landUseDescription":"Single Family Residential","zoningDescription":null,"year":2010,"marketLandValue":29380,"numberOfBuildings":1,"lotSizeIrregular":"85 X 138","county":"Butler County","pools":[],"censusTract":"390170118002005","areas":[{"areaSquareFeet":1492,"type":"Living Building Area"},{"areaSquareFeet":1144,"type":"Base Building Area"},{"areaSquareFeet":1140,"type":"Adjusted Building Area"},{"areaSquareFeet":1492,"type":"Zillow Calculated Finished Area"},{"areaSquareFeet":348,"type":"Addition Area"}],"building":[{"airConditioning":"Central","foundation":null,"architecturalStyle":"Ranch/Rambler","yearBuilt":1965,"fireplace":null,"noOfUnits":1,"effectiveYearBuilt":null,"sewer":"Municipal/Public","heating":"Central","class":null,"comments":null,"quarterBaths":null,"totalStories":1,"kitchens":2,"water":"Municipal/Public","classDescription":null,"quality":"C-","totalRooms":5,"bedrooms":3,"condition":"Average","baths":null,"threeQuarterBaths":null,"halfBaths":null,"occupancyStatus":null,"fullBaths":1}],"lotSizeFrontage":null,"parcelID":"112166032","marketValueYear":2010,"lotTopography":"Rocky","ownerName":["ROBERT D SUTTON"],"taxYear":2010,"marketTotalValue":105520,"taxID":"475393","taxExemption":null,"legal":{"phase":null,"tract":null,"city":null,"municipality":null,"section":null,"lot":null,"otherLot":null,"unit":null,"lotDescription":"1141 ENT","district":null,"block":null,"subdivisionName":null,"township":null},"id":"112166032-2010","state":"OH","lotSizeDepth":null,"apn":"R8000-017.000-071","marketImprovementValue":76140,"totalValue":36932,"address":{"zip":"45067","city":"Trenton","zip4":"1117","streetPre":null,"house":"431","unitType":null,"unit":null,"street":"Kenwood","houseExt":null,"streetSuffix":"Ln","state":"OH","streetPost":null,"full":" 431 Kenwood Ln Trenton OH 45067"},"landUseCode":"RR101","landUseGeneral":"RR","coordinates":[-84.465074,39.489885],"zpid":"33237764","fips":"39017","landValue":10283,"zoningCode":null,"lotSizeAcres":0.27,"garages":[],"improvementValue":26649,"taxAmount":1159.18,"lotSizeSquareFeet":11761.2,"url":"api.bridgedataoutput.com/api/v2/pub/assessments/112166032-2010"},{"landUseDescription":"Single Family Residential","zoningDescription":null,"year":2007,"marketLandValue":24950,"numberOfBuildings":1,"lotSizeIrregular":"85 X 138","county":"Butler County","pools":[],"censusTract":"390170118002005","areas":[{"areaSquareFeet":1492,"type":"Living Building Area"},{"areaSquareFeet":1144,"type":"Base Building Area"},{"areaSquareFeet":1140,"type":"Adjusted Building Area"},{"areaSquareFeet":1492,"type":"Zillow Calculated Finished Area"},{"areaSquareFeet":348,"type":"Addition Area"}],"building":[{"airConditioning":"Central","foundation":null,"architecturalStyle":"Ranch/Rambler","yearBuilt":1965,"fireplace":null,"noOfUnits":1,"effectiveYearBuilt":null,"sewer":"Municipal/Public","heating":"Central","class":null,"comments":null,"quarterBaths":null,"totalStories":1,"kitchens":2,"water":"Municipal/Public","classDescription":null,"quality":"C-","totalRooms":5,"bedrooms":3,"condition":"Average","baths":null,"threeQuarterBaths":null,"halfBaths":null,"occupancyStatus":null,"fullBaths":1}],"lotSizeFrontage":null,"parcelID":"112166032","marketValueYear":2007,"lotTopography":"Rocky","ownerName":["ROBERT D SUTTON"],"taxYear":2007,"marketTotalValue":107700,"taxID":"61840","taxExemption":null,"legal":{"phase":null,"tract":null,"city":null,"municipality":null,"section":null,"lot":null,"otherLot":null,"unit":null,"lotDescription":"1141 ENT","district":null,"block":null,"subdivisionName":null,"township":null},"id":"112166032-2007","state":"OH","lotSizeDepth":null,"apn":"R8000-017.000-071","marketImprovementValue":82750,"totalValue":37696,"address":{"zip":"45067","city":"Trenton","zip4":"1117","streetPre":null,"house":"431","unitType":null,"unit":null,"street":"Kenwood","houseExt":null,"streetSuffix":"Ln","state":"OH","streetPost":null,"full":" 431 Kenwood Ln Trenton OH 45067"},"landUseCode":"RR101","landUseGeneral":"RR","coordinates":[-84.465074,39.489885],"zpid":"33237764","fips":"39017","landValue":8733,"zoningCode":null,"lotSizeAcres":0.27,"garages":[],"improvementValue":28963,"taxAmount":1258.38,"lotSizeSquareFeet":11761.2,"url":"api.bridgedataoutput.com/api/v2/pub/assessments/112166032-2007"},{"landUseDescription":"Single Family Residential","zoningDescription":null,"year":2014,"marketLandValue":26930,"numberOfBuildings":1,"lotSizeIrregular":"85 X 138","county":"Butler County","pools":[],"censusTract":"390170118002005","areas":[{"areaSquareFeet":1492,"type":"Living Building Area"},{"areaSquareFeet":1144,"type":"Base Building Area"},{"areaSquareFeet":1140,"type":"Adjusted Building Area"},{"areaSquareFeet":1492,"type":"Zillow Calculated Finished Area"},{"areaSquareFeet":348,"type":"Addition Area"}],"building":[{"airConditioning":"Central","foundation":null,"architecturalStyle":"Ranch/Rambler","yearBuilt":1965,"fireplace":null,"noOfUnits":1,"effectiveYearBuilt":null,"sewer":"Municipal/Public","heating":"Central","class":null,"comments":null,"quarterBaths":null,"totalStories":1,"kitchens":2,"water":"Municipal/Public","classDescription":null,"quality":"C-","totalRooms":5,"bedrooms":3,"condition":"Average","baths":null,"threeQuarterBaths":null,"halfBaths":null,"occupancyStatus":null,"fullBaths":1}],"lotSizeFrontage":null,"parcelID":"112166032","marketValueYear":2014,"lotTopography":"Rocky","ownerName":["ROBERT D SUTTON"],"taxYear":2013,"marketTotalValue":89400,"taxID":"121009","taxExemption":null,"legal":{"phase":null,"tract":null,"city":null,"municipality":null,"section":null,"lot":null,"otherLot":null,"unit":null,"lotDescription":"1141 ENT","district":null,"block":null,"subdivisionName":null,"township":null},"id":"112166032-2014","state":"OH","lotSizeDepth":null,"apn":"R8000-017.000-071","marketImprovementValue":62470,"totalValue":31290,"address":{"zip":"45067","city":"Trenton","zip4":"1117","streetPre":null,"house":"431","unitType":null,"unit":null,"street":"Kenwood","houseExt":null,"streetSuffix":"Ln","state":"OH","streetPost":null,"full":" 431 Kenwood Ln Trenton OH 45067"},"landUseCode":"RR101","landUseGeneral":"RR","coordinates":[-84.465074,39.489885],"zpid":"33237764","fips":"39017","landValue":9430,"zoningCode":null,"lotSizeAcres":0.27,"garages":[],"improvementValue":21860,"taxAmount":1678.56,"lotSizeSquareFeet":11761.2,"url":"api.bridgedataoutput.com/api/v2/pub/assessments/112166032-2014"},{"landUseDescription":"Single Family Residential","zoningDescription":null,"year":2003,"marketLandValue":23760,"numberOfBuildings":1,"lotSizeIrregular":"85 X 138","county":"Butler County","pools":[],"censusTract":"390170118002005","areas":[{"areaSquareFeet":1492,"type":"Living Building Area"},{"areaSquareFeet":1144,"type":"Base Building Area"},{"areaSquareFeet":1140,"type":"Adjusted Building Area"},{"areaSquareFeet":1492,"type":"Zillow Calculated Finished Area"},{"areaSquareFeet":348,"type":"Addition Area"}],"building":[{"airConditioning":"Central","foundation":null,"architecturalStyle":"Ranch/Rambler","yearBuilt":1965,"fireplace":null,"noOfUnits":1,"effectiveYearBuilt":null,"sewer":"Municipal/Public","heating":"Central","class":null,"comments":null,"quarterBaths":null,"totalStories":1,"kitchens":2,"water":"Municipal/Public","classDescription":null,"quality":"C-","totalRooms":5,"bedrooms":3,"condition":"Average","baths":null,"threeQuarterBaths":null,"halfBaths":null,"occupancyStatus":null,"fullBaths":1}],"lotSizeFrontage":null,"parcelID":"112166032","marketValueYear":2003,"lotTopography":"Rocky","ownerName":["ROBERT D SUTTON"],"taxYear":2003,"marketTotalValue":102590,"taxID":null,"taxExemption":null,"legal":{"phase":null,"tract":null,"city":null,"municipality":null,"section":null,"lot":null,"otherLot":null,"unit":null,"lotDescription":"1141 ENT","district":null,"block":null,"subdivisionName":null,"township":null},"id":"112166032-2003","state":"OH","lotSizeDepth":null,"apn":"R8000-017.000-071","marketImprovementValue":78830,"totalValue":35907,"address":{"zip":"45067","city":"Trenton","zip4":"1117","streetPre":null,"house":"431","unitType":null,"unit":null,"street":"Kenwood","houseExt":null,"streetSuffix":"Ln","state":"OH","streetPost":null,"full":" 431 Kenwood Ln Trenton OH 45067"},"landUseCode":"RR101","landUseGeneral":"RR","coordinates":[-84.465074,39.489885],"zpid":"33237764","fips":"39017","landValue":8316,"zoningCode":null,"lotSizeAcres":0.27,"garages":[],"improvementValue":27591,"taxAmount":1380.02,"lotSizeSquareFeet":11761.2,"url":"api.bridgedataoutput.com/api/v2/pub/assessments/112166032-2003"},{"landUseDescription":"Single Family Residential","zoningDescription":null,"year":2009,"marketLandValue":29380,"numberOfBuildings":1,"lotSizeIrregular":"85 X 138","county":"Butler County","pools":[],"censusTract":"390170118002005","areas":[{"areaSquareFeet":1492,"type":"Living Building Area"},{"areaSquareFeet":1144,"type":"Base Building Area"},{"areaSquareFeet":1140,"type":"Adjusted Building Area"},{"areaSquareFeet":1492,"type":"Zillow Calculated Finished Area"},{"areaSquareFeet":348,"type":"Addition Area"}],"building":[{"airConditioning":"Central","foundation":null,"architecturalStyle":"Ranch/Rambler","yearBuilt":1965,"fireplace":null,"noOfUnits":1,"effectiveYearBuilt":null,"sewer":"Municipal/Public","heating":"Central","class":null,"comments":null,"quarterBaths":null,"totalStories":1,"kitchens":2,"water":"Municipal/Public","classDescription":null,"quality":"C-","totalRooms":5,"bedrooms":3,"condition":"Average","baths":null,"threeQuarterBaths":null,"halfBaths":null,"occupancyStatus":null,"fullBaths":1}],"lotSizeFrontage":null,"parcelID":"112166032","marketValueYear":2009,"lotTopography":"Rocky","ownerName":["ROBERT D SUTTON"],"taxYear":2009,"marketTotalValue":105520,"taxID":"478717","taxExemption":null,"legal":{"phase":null,"tract":null,"city":null,"municipality":null,"section":null,"lot":null,"otherLot":null,"unit":null,"lotDescription":"1141 ENT","district":null,"block":null,"subdivisionName":null,"township":null},"id":"112166032-2009","state":"OH","lotSizeDepth":null,"apn":"R8000-017.000-071","marketImprovementValue":76140,"totalValue":36932,"address":{"zip":"45067","city":"Trenton","zip4":"1117","streetPre":null,"house":"431","unitType":null,"unit":null,"street":"Kenwood","houseExt":null,"streetSuffix":"Ln","state":"OH","streetPost":null,"full":" 431 Kenwood Ln Trenton OH 45067"},"landUseCode":"RR101","landUseGeneral":"RR","coordinates":[-84.465074,39.489885],"zpid":"33237764","fips":"39017","landValue":10283,"zoningCode":null,"lotSizeAcres":0.27,"garages":[],"improvementValue":26649,"taxAmount":1154,"lotSizeSquareFeet":11761.2,"url":"api.bridgedataoutput.com/api/v2/pub/assessments/112166032-2009"}],"total":21}
uj5u.com熱心網友回復:
這篇文章是一個垃圾節目,所以很抱歉,如果我只是瀏覽了一下,請使用代碼塊,這樣我們才能真正解決問題,而不是在我們面前發送一堆垃圾資料,這些資料很可能無用手頭的問題。
似乎您正在使用stdClass Object它可能會讓您失望(此時只是猜測)。
如果要將資料完全轉換為 stdClass 物件或完全轉換為陣列以便于管理;您可以使用以下任一功能:
function array_to_stdClass(&$array){
$tmp = $array;
$array = new stdClass();
foreach($tmp as $k => $v) $array->$k = (!is_object($v) && !is_array($v)) ? $v:array_to_stdClass($v);
return $array;
}
function stdClass_to_array(&$stdClass){
$tmp = $stdClass;
$stdClass = array();
foreach($tmp as $k => $v) $stdClass[$k] = (!is_object($v) && !is_array($v)) ? $v:stdClass_to_array($v);
return $stdClass;
}
現場演示/示例:https ://onlinephp.io/c/2d00a
uj5u.com熱心網友回復:
好。我是個白癡。感謝所有看過的人。對不起,我浪費了你的時間。
訪問我需要的資料的正確方法其實是:
$ResponseInfo->bundle[0]->building[0]->airConditioning;
當然調整到正確的變數和成員。我遇到問題的原因是我的視野狹隘,當我試圖將代碼簡化為最簡單的元素時,我并沒有完全這樣做。
特別是,我試圖除錯的代碼在回圈中被重復呼叫以提取屬性資訊,當我簡化事情時,我忘記了這一點。我的測驗是提取五個屬性的資料,我專注于第一個,它的資料是正確的,并且被我和其他人驗證可以重復作業。
然而,回圈中的第二個屬性并沒有發揮得那么好。事實證明,為該屬性回傳的 JSON 資料實際上缺少我需要的元素。這當然是一個完全不同的問題。
僅僅因為拋出了一個錯誤,并不一定意味著它是導致它的回圈的第一次迭代,而我卻忽略了這一點。盡管我正在處理的代碼是如此模塊化,但作為我的克星的回圈已完全從我關注的例程中移除。
我可能應該剛剛洗掉這個問題,但我認為那些花時間看它的人會很感激跟進,也許它會幫助其他人在故障排除時考慮更大的圖景。
再次感謝大家。史蒂夫
uj5u.com熱心網友回復:
將 JSON 解碼為 php 是一項繁瑣的操作:它是 Javascript 馬和 php 驢之間的交叉。所以我認為它可能會有點令人困惑,如果不是固執的話。
這里有兩種方法可以將埋在 JSON 物件中的平方英尺相加。
/* php objects */
$ResponseInfo = json_decode( $json, false );
$sqft = 0;
foreach ( $ResponseInfo->bundle as $bundle ) {
foreach ( $bundle->areas as $area ) {
$sqft = $area->areaSquareFeet;
}
}
/* php traditional associative arrays */
$ResponseInfo = json_decode( $json, true );
$sqft = 0;
foreach ( $ResponseInfo['bundle'] as $bundle ) {
foreach ( $bundle['areas'] as $area ) {
$sqft = $area['areaSquareFeet'];
}
}
無論哪種情況,當您從$ResponseInfo輸出開始時,json_decode您必須顯式地從該物件的頂層導航到您需要的資料。這種表達方式不會那樣做。
$sqft = $ResponseInfo->building[0]->squarefeet;
building不是該解碼物件的成員,并且squarefeet您的 JSON 中沒有呼叫任何成員。
編輯
此運算式訪問 JSON 中第一個捆綁物件中的第一個構建物件(當解碼為 php 物件時)。
$ResponseInfo->bundle[0]->building[0]->airConditioning;
如您所知,API 回應的有效負載位于一個名為bundle. (頂層回應中的其他內容是顯示請求狀態的 API 包裝器。)因此,上面的運算式查看捆綁陣列的第一個元素以找到構建陣列。然后它查看構建陣列的第一個元素以找到名為 的物件屬性noOfUnits。
我應該解釋我做了什么——我是如何得出答案的。我有啟用 JSON 格式化程式插件的記事本 。我將您的 JSON 放入該編輯器中的草稿檔案中并對其進行格式化。然后,逐級探索您的 JSON 物件變得很容易。
php 物件有一個不幸的屬性,即參考$object->undefined回傳 null 而不是拋出錯誤。并且 a foreach()on a null 只是回圈零次。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/478584.html
