我正在尝试使用下面列出的php代码读取json文件,但我无法将这些值分配给局部变量。
有人可以帮我解释一下我做错了什么吗?
<?php
$file = "http://localsurch.com/deals2.txt";
$response = json_decode(file_get_contents($file), true);
//print_r($response);
foreach ($response as $mydeal)
{
$category = $mydeal->category->name;
$title = $mydeal->websiteTitle;
$finePrint = $mydeal->finePrint;
$imageURL = $mydeal->imageURL;
$merchant = $mydeal->merchant->displayName;
$streetaddress1 = $mydeal->redemptionLocations->addressStreet1;
}
?>
阵 ( [date] =&gt; 28-Jun-14 5.46.34.871 PM [deals] =&gt;排列 ( [0] =&gt;排列 ( [category] =&gt;排列 ( [name] =&gt;维修&amp;服务 [路径] =&gt;排列 ( [0] =&gt;汽车 [1] =&gt;维修&amp;服务 )
)
[websiteTitle] => Three Full-Service Oil Changes, Tire Rotations, and More
[description] => <p>Since 1988, <a href="http://www.planetsupersaver.com/"target="_blank"> Planet Super Saver</a> has been saving members thousands of dollars on their automotive maintenance and repairs nationwide. Their goal is to unite you with trustworthy, top-notch service centers in your area at a huge savings. The service center's goal is to introduce themselves to you with the hopes you'll become a long-term customer through their honesty and professional service you can depend on.</p>
[finePrint] => <ul><li><b>Online redemption required at planetsupersaver.com; a punch card will be mailed within 5 business days</b></li>
[offerEndTime] => 1411714800000
[options] => Array
(
[0] => Array
(
[title] => 7111 Sudley Rd Location - Auto Maintenance Package (Three Complete Oil Changes, Two Tire Rotations, Diagnostics, and Inspections)
[value] => Array
(
[currencyCode] => USD
[amountInBaseUnit] => 17900
)
[price] => Array
(
[currencyCode] => USD
[amountInBaseUnit] => 3000
)
)
[1] => Array
(
[title] => 7892 Sudley Rd Location - Auto Maintenance Package (Three Complete Oil Changes, Two Tire Rotations, Diagnostics, and Inspections)
[value] => Array
(
[currencyCode] => USD
[amountInBaseUnit] => 17900
)
[price] => Array
(
[currencyCode] => USD
[amountInBaseUnit] => 3000
)
)
)
[geographies] => Array
(
[0] => Array
(
[seoName] => northern-virginia
[displayName] => Northern Virginia
)
[1] => Array
(
[seoName] => montgomery-county
[displayName] => Montgomery County
)
[2] => Array
(
[seoName] => washington-dc
[displayName] => Washington, D.C.
)
[3] => Array
(
[seoName] => arlington-alexandria
[displayName] => Arlington / Alexandria
)
)
[redemptionLocations] => Array
(
[0] => Array
(
[addressPostalCode] => 20109
[addressStateOrProvince] => VA
[addressStreet1] => Battlefield BP
[addressStreet2] => 7111 Sudley Rd
[geography] => Array
(
[displayName] => Northern Virginia
)
[latitude] => 38.799067
[longitude] => -77.518125
[phoneNumber] => 480-921-8282
)
)
)
[1] => Array
(
[category] => Array
(
[name] => Indian
[path] => Array
(
[0] => Restaurants
[1] => Indian
)
)
[websiteTitle] => $15 to Spend on Food and Drink
[description] => <p>Dine on savory Pakistani and Indian cuisine at this eatery, where everything is Halal. Enjoy kabobs, curries, and Biryani—but don't miss out on their house specialty, The Karahi, with chicken, beef, goat, lamb, fish or paneer:</p>
炭火鸡的网站|实
[finePrint] => <ul><li>Limit 2 per customer </li>
[offerEndTime] => 1405148400000
[options] => Array
(
[0] => Array
(
[title] => $15 to Spend on Food and Nonalcoholic Drinks
[value] => Array
(
[currencyCode] => USD
[amountInBaseUnit] => 1500
)
[price] => Array
(
[currencyCode] => USD
[amountInBaseUnit] => 700
)
)
)
[geographies] => Array
(
[0] => Array
(
[seoName] => northern-virginia
[displayName] => Northern Virginia
)
)
[redemptionLocations] => Array
(
[0] => Array
(
[addressPostalCode] => 20151
[addressStateOrProvince] => VA
[addressStreet1] => 13969 Metrotech Drive
[addressStreet2] =>
[geography] => Array
(
[displayName] => Northern Virginia
)
[latitude] => 38.895558
[longitude] => -77.4283257
[phoneNumber] => 703-953-3700
)
)
)
[2] => Array
(
[category] => Array
(
[name] => Watches
[path] => Array
(
[0] => Retail Products
[1] => Watches
)
)
[websiteTitle] => Watch-Battery Replacement or Watch Repair
[description] => <p>Fashion Time is the premier spot in Maryland and Virginia to buy and repair all your timepieces. Whether you're in the market for a grandfather clock or a new stem for your watch, these time experts can help. </p><ul><li>$6 ($13 value) for a battery replacement for a non-Swiss watch</li><li>$19 ($40 value) for a battery replacement for a Swiss watch</li><li>$20 for $40 to spend on watches or watch repair</li><li>Old-fashioned craftsmen and technicians are experts in timepieces </li></ul><p>Fashion Time on <a href="https://www.facebook.com/pages/Fashion-Time/150334105035439" target="_blank">Facebook</a></p>
[finePrint] => <p></p><ul><li>Buy as many as you like; send as many as you like as gifts<br></li><li>Limit 1 voucher per customer per visit<br></li><li>Valid only for option purchased<br></li><li>Excludes sale items<br></li><li>Valid only for in-store purchases<br></li><li>Cannot be combined with any other offers or promotions<br></li><li>Entire value per voucher must be used in a single visit </li><li>Available for use beginning the day after purchase</li><li>PROMOTIONAL VALUE EXPIRES 180 DAYS FROM THE PURCHASE DATE</li><li>PAID VALUE EXPIRES 5 YEARS FROM THE PURCHASE DATE</li></ul><p></p>
[asin] => B00KO8KOMM
[imageURL] => /images/G/01/ember/deals/7d648552caa12945ae14ee4554d255b21e1ae7739fce1f4be07ebf83e495e4
[merchant] => Array
(
[displayName] => Fashion Time
)
[offerEndTime] => 1411542000000
[options] => Array
(
[0] => Array
(
[title] => Battery Replacement for a Non-Swiss Watch
[value] => Array
(
[currencyCode] => USD
[amountInBaseUnit] => 1300
)
[price] => Array
(
[currencyCode] => USD
[amountInBaseUnit] => 600
)
)
[1] => Array
(
[title] => Battery Replacement for a Swiss Watch
[value] => Array
(
[currencyCode] => USD
[amountInBaseUnit] => 4000
)
[price] => Array
(
[currencyCode] => USD
[amountInBaseUnit] => 1900
)
)
)
[geographies] => Array
(
[0] => Array
(
[seoName] => northern-virginia
[displayName] => Northern Virginia
)
[1] => Array
(
[seoName] => montgomery-county
[displayName] => Montgomery County
)
)
[redemptionLocations] => Array
(
[0] => Array
(
[addressPostalCode] => 20166
[addressStateOrProvince] => VA
[addressStreet1] => 2110 D Dulles Town Ctr
[addressStreet2] =>
[geography] => Array
(
[displayName] => Northern Virginia
)
[latitude] => 39.035249
[longitude] => -77.42987
[phoneNumber] => 571-434-8875
)
[1] => Array
(
[addressPostalCode] => 22102
[addressStateOrProvince] => VA
[addressStreet1] => 1961 Chain Bridge Rd
[addressStreet2] =>
[geography] => Array
(
[displayName] => Northern Virginia
)
[latitude] => 38.91971111
[longitude] => -77.2259265
[phoneNumber] => 703-893-9005
)
)
)
)
)
答案 0 :(得分:2)
你告诉json_decode()
给你一个数组但是你试图像对象一样访问它的值。要么返回一个对象......
$response = json_decode(file_get_contents($file));
...或使用数组语法访问这些值:
foreach ($response as $mydeal)
{
$category = $mydeal['category']['name'];
$title = $mydeal['websiteTitle'];
$finePrint = $mydeal['finePrint'];
$imageURL = $mydeal['imageURL'];
$merchant = $mydeal->merchant['displayName'];
$streetaddress1 = $mydeal['redemptionLocations']['addressStreet1'];
}