[英]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);
}
你犯了两个严重错误:
您应该寻找最小值的正确位置是所有报价的最终数组,并且应该在循环之外完成。 下面的代码将实现这一点:
$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.