【问题标题】:PHP - Change only value with '0' to string 'Free'PHP - 仅将“0”的值更改为字符串“免费”
【发布时间】:2022-01-17 11:55:06
【问题描述】:

我只是简化了 JSON 数据,因为我只需要其中的两个值。正如您在下面的代码中看到的那样,我过滤了我需要的内容,但在某些值中为 0,并且在输出中只有该零需要作为新值“免费”。

这是我现在得到的代码:

    $json = '[{"Number":"333567","Cost":0},{"Number":"333568","Cost":7500},{"Number":"333569","Cost":7500}]';
    $options = json_decode($json, true);

        $newArray = [];
        foreach ($options as $key => $value) {
            $newArray[$value['Number']]= $value['Number']." "."£".$value['Cost'] / 100;
        }
    echo '<br>';
    echo '<br>';

    print_r($newArray);

我得到的结果是:

Array ( [333567] => 333567 £0 [333568] => 333568 £75 [333569] => 333569 £75 )

但我只需要 £0 像这样免费输出:

Array ( [333567] => 333567 Free [333568] => 333568 £75 [333569] => 333569 £75 )

【问题讨论】:

    标签: php arrays json replace foreach


    【解决方案1】:
    $newArray[$value['Number']]= $value['Number']." ".($value['Cost'] / 100 == 0 ? 'Free': "&pound;".$value['Cost'] / 100);
    

    希望能解决你的问题

    【讨论】:

    • 我尝试在 'Free' 和 $value['Cost'] / 100 $newArray[$value['Number']]= $value['Number']." "."&lt;br /&gt; &lt;span&gt;".($value['Cost'] / 100 == 0 ? 'Free' : "&amp;pound;".($value['Cost'] / 100)."&lt;/span&gt;"); 周围添加 span 标签,但我将 span 嵌套到循环中并且无法渲染封闭标签,尝试了很多东西,但没有...
    【解决方案2】:

    你可以试试 $value['Cost'] / 100 > 0 吗? $value['Cost'] : '免费' 你的代码在下面

        $json = '[{"Number":"333567","Cost":0},{"Number":"333568","Cost":7500},{"Number":"333569","Cost":7500}]';
        $options = json_decode($json, true);
    
            $newArray = [];
            foreach ($options as $key => $value) {
                $newArray[$value['Number']]= $value['Number']." "."&pound;".($value['Cost'] / 100 > 0 ? $value['Cost'] : 'free');
            }
        echo '<br>';
        echo '<br>';
    
        print_r($newArray);
    

    【讨论】:

    • 足够接近了,但£ 显示为免费,谢谢哥们! @Muhammad Atif Akram 给出正确的解决方案。
    【解决方案3】:

    如果我正确理解了这个问题,你会想要替换

            $newArray[$value['Number']]= $value['Number']." "."&pound;".$value['Cost'] / 100;
    

            $priceLabel = ($value['Number'] == 0 ? 'Free' : $value['Number'] . " &pound;");
            $newArray[( $value['Number'] )] = $priceLabel . ($value['Cost'] / 100);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多