无法读取json文件并为本地变量赋值


Unable to read json file and assign value to local varibales

我正在尝试使用下面列出的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] => 28- june -14 5.46.34.871 PM[deals] =>数组([0] =>数组([category] => Array([name] =>修理&服务[path] => Array([0] =>汽车[1] =>修理&服务)

                    )
                [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>
  • 30美元(价值179美元)的汽车维修包
  • 包括三次完整的换油,两次轮胎旋转,诊断和检查
  • 预防性保健可以节省大笔费用
  • 高效、友好的专业人员完成工作
                [finePrint] => <ul><li><b>Online redemption required at planetsupersaver.com; a punch card will be mailed within 5 business days</b></li>

  • 打卡卡自兑换之日起有效期为1年
  • 需要预约,视情况而定;欲了解更多信息,请致电Planet Super Saver客户支持480-921-8282
  • 商家取消/重新安排24小时政策适用;可被没收的凭证
  • 穿孔卡可在同一个人或家庭拥有的车辆之间转让,并可多次使用
  • 仅对购买时选择的地点有效
  • 不可与其他优惠或促销活动同时使用
  • 想买多少就买多少;想送多少就送多少
  • 完全换油包括多达5夸脱的油,润滑油和过滤器。额外的夸脱油、合成油或柴油需额外收费
  • 一些要求制冷剂和冷却剂的服务将需要额外费用
  • $4.50处理费、税金及小费不包括
  • 购买后可立即使用
  • 促销价值自购买之日起180天失效
  • 付款值自购买日起5年失效
  • [asin] => B00LBL758W[imageURL] =>/images/G/01/ember/deals/c617b334d1893eae7cbc94301fab538c5880b3e24f95669d10ad118fe38eaadc[merchant] =>数组([displayName] => Planet Super Saver)
                    [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&#8212but don't miss out on their house specialty, The Karahi, with chicken, beef, goat, lamb, fish or paneer:</p>
    
    • 花15美元买食物和非酒精饮料,却换来7美元
    • 各种菜单功能包裹,沙拉,咖喱,和烧烤最爱
    • 我们推荐炭鸡套餐,包括温暖的印度烤饼和美味的配菜

    炭鸡网站| Facebook

                    [finePrint] => <ul><li>Limit 2 per customer </li>
    

  • 每次访问限制1个表
  • 只适用于用餐或外卖
  • 排除酒精
  • 不包括假期
  • 整个值必须在一次访问中使用
  • 从购买之日起开始使用
  • 促销价值在2014年10月12日后失效
  • 付款值自购买日起5年失效
  • [asin] => B00L1OHHZK[imageURL] =>/images/G/01/ember/deals/ab799f011c6041f1d99b776d4e11f8b7e0e3c2422a6fd1ccae595d5c70c2937c[merchant] =>数组([displayName] =>炭鸡)
                    [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
                                )
                        )
                )               
        )
    

    )

    你告诉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']; 
    }