繁体   English   中英

PHP 从动态生成的数组列表中回显最小值

[英]PHP echo the lowest value from a list of dynamically generated array

我正在使用 Wordpress 购物主题,它将产品详细信息(价格、colors 等)显示为 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 上找到价格在页面中作为纯文本。 在此处输入图像描述

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

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

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);
}

你犯了两个严重错误:

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM