2016-07-11 103 views
1

我的需求是访问json响应,将其存储在php变量中,以便我将这些变量插入到数据库中。这里是我的代码无法打印多维数组

$jsondata = file_get_contents('dealdetails.json'); 
$array = json_decode($jsondata, true); 
$arrlength = count($array); 
echo $arrlength; 

for ($x = 0; $x < $arrlength; $x++) 
{ 
    //echo $x; 
    $PromoID = $array[$x]['PromoID']; 
    $OfferID = $array[$x]['OfferID']; 
    $OfferName = $array[$x]['OfferName']; 
    $Type = $array[$x]['Type']; 
    $Code = $array[$x]['Code']; 
    $Title = $array[$x]['Title']; 
    $Description = $array[$x]['Description']; 
    $Category = $array[$x]['Category']; 
    $OfferPage = $array[$x]['OfferPage']; 
    $DateAdded = $array[$x]['DateAdded']; 
    $Expiry = $array[$x]['Expiry']; 

    echo "<br>"; 
} 

无法在迭代

例获得分配的值: $数组[0] [ 'promoId']正在 凡为$阵列[$ X] [ 'promoId' ] 不管用。

的Json样品要求:

[{"featured":"0","exclusive":"1","promo_id":"xxx","offer_id":"x","offer_name":"xxx","coupon_title":"xx","category":"","coupon_description":"","coupon_type":"Coupon","coupon_code":"xxx","ref_id":"xxx","link":"xxx","coupon_expiry":"2017-03-31","added":"2016-01-05","preview_url":"http:\/\/www.stalkbuylove.com\/","store_link":"http:\/\/tracking.vcommission.com\/aff_c?offer_id=230&aff_id=43367"}, 
[{"featured":"0","exclusive":"1","promo_id":"xxx","offer_id":"x","offer_name":"xxx","coupon_title":"xx","category":"","coupon_description":"","coupon_type":"Coupon","coupon_code":"xxx","ref_id":"xxx","link":"xxx","coupon_expiry":"2017-03-31","added":"2016-01-05","preview_url":"http:\/\/www.stalkbuylove.com\/","store_link":"http:\/\/tracking.vcommission.com\/aff_c?offer_id=230&aff_id=43367"}, 

请建议。

+2

真的很难理解你的问题,请重新说明。 –

+0

@OfirBaruch:对不起,造成的不便。改编问题请建议 – user3762051

+0

$ array [x]将是$ array [$ x],$ x的值甚至不是'$ x' – developerCK

回答

2

尝试这样:

$jsondata = file_get_contents('dealdetails.json'); 
$array = json_decode($jsondata, true); 

foreach ($array as $key => $value) 
{ 
    //print_r($value); 

    echo $value['PromoID']; 
    $PromoID = $value['PromoID']; 
    $OfferID = $value['OfferID']; 
    $OfferName = $value['OfferName']; 
    $Type = $value['Type']; 
    $Code = $value['Code']; 
    $Title = $value['Title']; 
    $Description = $value['Description']; 
    $Category = $value['Category']; 
    $OfferPage = $value['OfferPage']; 
    $DateAdded = $value['DateAdded']; 
    $Expiry = $value['Expiry']; 

    echo "<br>"; 
} 

使用foreach()是通过数组迭代的正确方法。

另请注意,您提供的示例JSON使用promo_id而不是PromoID,因此您需要$value['promo_id']

+0

感谢您的帮助。它的工作现在。 – user3762051

+0

没问题,乐于帮忙! :) – Will

+0

会有一些小的帮助。实际上,我现在使用的json文件实际上是Web服务调用的输出。我可以直接使用该Web服务响应而不是复制到文件然后使用它? – user3762051