2016-01-11 33 views
1

有一些麻煩從環一個PHP有效的JSON輸出,這是我的JSON:創建從PHP有效的JSON輸出迴路

[{"title":"One Colour ($2.45)","price":"($2.45)"},{"title":"Two Colours ($3.35)","price":"($3.35)"},{"title":"Three Colours ($4.25)","price":"($4.25)"}],[{"title":"One Colour ($2.45)","price":"($2.45)"},{"title":"Two Colours ($3.35)","price":"($3.35)"},{"title":"Three Colours ($4.25)","price":"($4.25)"},{"title":"One Colour ($3.05)","price":"($3.05)"},{"title":"Two Colours ($4.35)","price":"($4.35)"},{"title":"Three Colours ($5.75)","price":"($5.75)"}], 

這裏是我的PHP循環,創建JSON輸出

foreach ($product_addons as $addon) { 


    foreach ($addon['options'] as $option) : 

     $loop ++; 
     switch ($qty) { 
      case ($qty < 20): 
       $price = $option['price'] > 0 ? ' (' . wc_price(get_product_addon_price_for_display($option['price'])) . ')' : ''; 
       $title = strip_tags($option['label']. $price); 


      break; 
      case ($qty > 20 && $qty < 35): 
       $price = $option['discount'] > 0 ? ' (' . wc_price(get_product_addon_price_for_display($option['discount'])) . ')' : ''; 
       $title = strip_tags($option['label']. $price); 
      break; 


     } 

     $select_text[] = array( 
       'title' => trim($title), 
       'price' => trim(strip_tags($price)), 
     ); 



    endforeach; 
    echo json_encode($select_text).","; 
} 

我現在得到的問題是,JSON輸出現在是有效的,我不能完全弄清楚如何改善它。

回答

0

最終被看這個線程計算出來: create multidimensional array using a foreach loop

基本上所有我需要做的是使用的第一個foreach循環的索引多維數組。這是我的最終代碼:

foreach ($product_addons as $key => $addon) { 

    foreach ($addon['options'] as $option) : 

     $loop ++; 
     switch ($qty) { 
      case ($qty < 20): 
       $price = $option['price'] > 0 ? ' (' . wc_price(get_product_addon_price_for_display($option['price'])) . ')' : ''; 
       $title = strip_tags($option['label']. $price); 

      break; 
      case ($qty > 20 && $qty < 35): 
       $price = $option['discount'] > 0 ? ' (' . wc_price(get_product_addon_price_for_display($option['discount'])) . ')' : ''; 
       $title = strip_tags($option['label']. $price); 
      break; 

     } 

     $title = trim($title); 

     // Add in your custom fields or WP fields that you want 
     $locations[$key][] = array(
      'title' => $title, 

     ); 

    endforeach; 
} 
echo json_encode($locations); 
1

根據https://jsonformatter.curiousconcept.com/問題是

多JSON根元素

的解決方案是在1 puttin一切嵌入阿雷:

[ 
    [ 
     { 
     "title":"One Colour ($2.45)", 
     "price":"($2.45)" 
     }, 
     { 
     "title":"Two Colours ($3.35)", 
     "price":"($3.35)" 
     }, 
     { 
     "title":"Three Colours ($4.25)", 
     "price":"($4.25)" 
     } 
    ], 
    [ 
     { 
     "title":"One Colour ($2.45)", 
     "price":"($2.45)" 
     }, 
     { 
     "title":"Two Colours ($3.35)", 
     "price":"($3.35)" 
     }, 
     { 
     "title":"Three Colours ($4.25)", 
     "price":"($4.25)" 
     }, 
     { 
     "title":"One Colour ($3.05)", 
     "price":"($3.05)" 
     }, 
     { 
     "title":"Two Colours ($4.35)", 
     "price":"($4.35)" 
     }, 
     { 
     "title":"Three Colours ($5.75)", 
     "price":"($5.75)" 
     } 
    ] 
] 

和2:在線路echo json_encode($select_text).",";爲什麼你會添加一個尾隨逗號嗎?

+0

謝謝你 - 我用你的建議,看着另一個線程想出一個解決方案 – rhysclay