dptpn06684 2014-06-28 19:27
浏览 122

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

I am trying to read json file using php code listed below but I am unable to assign these values to local variables.

Can someone help me explain what am I doing wrong?

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

}

?>

Array ( [date] => 28-Jun-14 5.46.34.871 PM [deals] => Array ( [0] => Array ( [category] => Array ( [name] => Repair & Services [path] => Array ( [0] => Automotive [1] => Repair & Services )

                    )

                [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 value) for an auto maintenance package
  • Includes three complete oil changes, two tire rotations, diagnostics, and inspections
  • Preventative care can mean big savings down the road
  • Efficient, friendly professionals get the job done right
                [finePrint] => <ul><li><b>Online redemption required at planetsupersaver.com; a punch card will be mailed within 5 business days</b></li>

Punch card is valid for 1 year from date of redemption Appointments are required and subject to availability; for more information call Planet Super Saver customer support at 480-921-8282 Merchant cancellation/re-scheduling policy of 24 hours applies; voucher subject to forfeiture Punch Card is transferable between vehicles owned by the same person or family and may be used over multiple visits Valid only for location selected at time of purchase Cannot be combined with any other offer or promotion Buy as many as you like; send as many as you like as gifts Complete oil change includes up to 5 quarts of oil, lube, and filter. Additional quarts and synthetic or diesel oil are available for an extra fee Some services calling for refrigerant and coolant will require an extra fee $4.50 disposal fee, tax, and gratuity are not included Available for use immediately after purchase PROMOTIONAL VALUE EXPIRES 180 DAYS FROM THE PURCHASE DATE PAID VALUE EXPIRES 5 YEARS FROM THE PURCHASE DATE [asin] => B00LBL758W [imageURL] => /images/G/01/ember/deals/c617b334d1893eae7cbc94301fab538c5880b3e24f95669d10ad118fe38eaadc [merchant] => Array ( [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>
  • $7 for $15 to spend on food and nonalcoholic drinks
  • Varied menu features wraps, salads, curry, and grill favorites
  • We recommend the charcoal chicken combo, which includes warm naan and tasty sides

Charcoal Chicken's Website | Facebook

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

Limit 1 per table per visit Valid only for dine-in or takeout Excludes alcohol Excludes holidays Entire value must be used in a single visit Available for use beginning the day after purchase PROMOTIONAL VALUE EXPIRES FOLLOWING OCTOBER 12, 2014 PAID VALUE EXPIRES 5 YEARS FROM THE PURCHASE DATE [asin] => B00L1OHHZK [imageURL] => /images/G/01/ember/deals/ab799f011c6041f1d99b776d4e11f8b7e0e3c2422a6fd1ccae595d5c70c2937c [merchant] => Array ( [displayName] => Charcoal Chicken )
                [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
                            )

                    )

            )               

    )

)

  • 写回答

1条回答 默认 最新

  • doujiao1180 2014-06-28 19:30
    关注

    You're telling json_decode() to give you an array but then you try to access its values like an object. Either return an object...

    $response = json_decode(file_get_contents($file));
    

    ...or access those values using array syntax:

    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']; 
    }
    
    评论

报告相同问题?

悬赏问题

  • ¥20 求各位懂行的人,注册表能不能看到usb使用得具体信息,干了什么,传输了什么数据
  • ¥15 个人网站被恶意大量访问,怎么办
  • ¥15 Vue3 大型图片数据拖动排序
  • ¥15 Centos / PETGEM
  • ¥15 划分vlan后不通了
  • ¥20 用雷电模拟器安装百达屋apk一直闪退
  • ¥15 算能科技20240506咨询(拒绝大模型回答)
  • ¥15 自适应 AR 模型 参数估计Matlab程序
  • ¥100 角动量包络面如何用MATLAB绘制
  • ¥15 merge函数占用内存过大