2014-06-28 54 views
-3

我想使用下面列出的php代码来读取json文件,但我无法将这些值分配给本地变量。无法读取json文件并将值分配给本地varibales

有人可以帮我解释我做错了什么?

<?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; 

} 

?> 

阵列 ( [日期] => 28君14 5.46.34.871 PM [优惠] =>数组 ( [0] =>数组 ( [类别] =>数组 ( [名称] =>修理&服务 [路径] =>数组 ( [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处置费,税收和小费不包括
  • 可用于使用购买后立即
  • PROMOTIONAL值到期180天,从购买日期
  • PAID值到期从购买日起5年
  • [ASIN] = > B00LBL758W [IMAGEURL] => /图像/ G/01 /余烬/交易/ c617b334d1893eae7cbc94301fab538c5880b3e24f95669d10ad118fe38eaadc [商家] =>数组 ( [显示名] =>行星超级节电器 )

       [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> 
    
    • $ 7 $ 15至花在食品和非酒精饮料
    • 多样化的菜单包括包装,沙拉,咖喱,和烧烤最爱
    • 我们建议木炭鸡组合,其中包括温暖烤饼和美味的双方

    Charcoal Chicken的网站| Facebook的

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

  • 限制1每桌每次访问
  • 仅于堂食或外卖有效
  • 排除酒精
  • 不包括节假日
  • 整个价值必须在一个访问中使用
  • 购买后可开始使用
  • 2014年10月12日之后的促销价到期
  • PAID值到期5年从购买日起
  • [ASIN] => B00L1OHHZK [IMAGEURL] => /图像/ G/01 /余烬/交易/ ab799f011c6041f1d99b776d4e11f8b7e0e3c2422a6fd1ccae595d5c70c2937c [商家] =>数组 ( [显示名] =>炭火烤鸡 )

       [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 
              ) 
    
            ) 
    
          )    
    
        ) 
    

    回答

    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']; 
    } 
    
    +0

    我已经根据您的意见修改了我的代码。这是我的PHP代码,它仍然不起作用。 <?php \t $ file =“http://localsurch.com/deals2。TXT“; \t $响应= json_decode(的file_get_contents($文件)); \t的foreach($响应为$ mydeal) \t { \t \t $类别= $ mydeal [ '类别'] [ '名称'] ; \t \t $标题= $ mydeal [ 'websiteTitle']; \t \t $的FinePrint = $ mydeal [ '的FinePrint']; \t \t $ IMAGEURL = $ mydeal [ 'IMAGEURL']; \t \t $商家= $ mydeal-> merchant ['displayName']; \t \t $ streetaddress1 = $ mydeal ['redemptionLocations'] ['addressStreet1']; \t} \t?> – user3786547

    相关问题