【问题标题】:PHP echo the lowest value from a list of dynamically generated arrayPHP 从动态生成的数组列表中回显最小值
【发布时间】:2021-02-05 11:13:05
【问题描述】:

我使用的是 Wordpress 购物主题,它将产品详细信息(价格、颜色等)显示为 json 脚本,但我至少需要将价格显示为文本。开发人员不是很有帮助,我的 php 知识仅限于没有,所以我希望这对这里的人来说是一个简单/快速的修复。 这是生成 json 的脚本部分:

if(is_array($product['skuAttr'])) {
    $str_data['offers'] = [];
    foreach ($product['skuAttr'] as $k => $attr) {
        $str_data['offers'][] = [
            "@type" => "Offer",
            "url" => $this_url . '?sku=' . $k,
            "priceCurrency" => $product['currency'],
            "price" => $attr['_salePrice_nc'],
            "priceValidUntil" => date('Y-m-d',
                strToTime('today + 30 days')
            ),
            "name" => $itemmeta['name'],
            "availability" => $attr['isActivity'] ? "https://schema.org/InStock" : "https://schema.org/OutOfStock",
            "itemCondition" => "https://schema.org/NewCondition"
        ];
        $min_saleprice = min($attr['_salePrice_nc']);  // that's mine

    }
}

...以后:

<script type="application/ld+json">
    <?php echo json_encode($str_data); ?>
</script>

$min_saleprice 是我的想法,后来我也附和了,当然,它破坏了网站。

<?php echo $min_saleprice; ?>  /// not a chance

那么,如何在文档后面显示_salePrice_nc? 谢谢。

如果重要的话,我正在使用最新的 Wordpress 5.6.1、PHP 7.2、nGinx,我需要它来验证 Pinterest 上的产品,它的爬虫不够聪明,无法从脚本中获取价格,我认为它必须在页面中以纯文本形式找到它。 enter image description here

【问题讨论】:

  • 忘了说json脚本生成正常。

标签: php arrays wordpress


【解决方案1】:

您犯了两个严重错误:

  1. 您在错误的位置寻找最低价格(您试图选择单一价格的最低值 - 它不是一个数组)。
  2. 您在每次迭代中都覆盖了变量。

您应该寻找最小值的正确位置是所有报价的最终数组,并且应该在循环之外完成。下面的代码将实现这一点:

$min_saleprice = min(array_column($str_data['offers'], 'price'));

array_column 函数从$str_data['offers'] 中提取所有price 值,然后min 选择其中最低的值。

【讨论】:

    【解决方案2】:

    如果您想要报价中价格的最低值,那么您可以为此目的构建一个数组并获得最低值。

    但您需要确保这是在循环之外。

    if(is_array($product['skuAttr'])) {
        $str_data['offers'] = [];
        $productPrices = [];
        foreach ($product['skuAttr'] as $k => $attr) {
            $productPrices[] = $attr['_salePrice_nc'];
            $str_data['offers'][] = [
                "@type" => "Offer",
                "url" => $this_url . '?sku=' . $k,
                "priceCurrency" => $product['currency'],
                "price" => $attr['_salePrice_nc'],
                "priceValidUntil" => date('Y-m-d',
                    strToTime('today + 30 days')
                ),
                "name" => $itemmeta['name'],
                "availability" => $attr['isActivity'] ? "https://schema.org/InStock" : "https://schema.org/OutOfStock",
                "itemCondition" => "https://schema.org/NewCondition"
            ];
        }
    
        $min_saleprice = min($productPrices);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-12-09
      • 1970-01-01
      • 2021-07-11
      • 2016-03-06
      • 2020-03-15
      • 2015-08-10
      • 1970-01-01
      • 2019-11-03
      相关资源
      最近更新 更多