【问题标题】:Creating a valid JSON output from PHP for loops从 PHP for 循环创建有效的 JSON 输出
【发布时间】:2016-01-11 09:55:50
【问题描述】:

在从 php for 循环中获取有效 JSON 输出时遇到了一些问题,这是我的 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)"}], 

这是我创建 json 输出的 php 循环

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 输出现在有效,我不知道如何改进它。

【问题讨论】:

    标签: php json for-loop


    【解决方案1】:

    根据https://jsonformatter.curiousconcept.com/的问题是

    多个 JSON 根元素

    解决方案是将所有内容放入 1 个嵌入数组中:

    [  
       [  
          {  
             "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).","; 为什么要添加尾随逗号?

    【讨论】:

    • 谢谢你 - 我使用了你的建议并查看了另一个线程以提出解决方案
    【解决方案2】:

    通过查看此线程最终弄清楚了: 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);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-04-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-27
      • 2016-11-08
      • 1970-01-01
      相关资源
      最近更新 更多