我正在使用以下代码在产品页面上检索并显示我的产品属性值:
$discounts = get_post_meta( $product->id, '_my_discounts' );
_my_discount
是一个包含不同折扣的数组。每个折扣都包含不同的信息(min_qty
,discount
,type
,is_flat
等)。当我使用echo var_dump($discounts);
时
我得到以下输出(我有两个折扣):
array(1) { [0]=> array(2) {
["58038e0802c2252b7f50a70d25a33ede"]=> array(7) { ["min_qty"]=> int(4) ["discount"]=> string(3) "100" ["type"]=> int(2) ["role"]=> string(3) "any" ["position"]=> string(1) "0" ["is_flat"]=> int(1) ["is_variations_sep"]=> int(0)
["007632f30006ccaac16982b779ec57ae"]=> array(7) { ["min_qty"]=> int(8) ["discount"]=> string(3) "293" ["type"]=> int(2) ["role"]=> string(3) "any" ["position"]=> string(1) "0" ["is_flat"]=> int(1) ["is_variations_sep"]=> int(0)
我的问题是,如何从["discount"]
的数组中检索最高折扣并将其显示在产品页面上?例如,上述产品有两个折扣$ 100和$ 293。我想检索两者中的最高者,并将其显示在我的产品页面上。
我尝试了以下操作,但是没有用:
foreach ( $discounts as $highest_discount ) :
$discount_value = wc_get_product_terms( $product->id, $highest_discount['discount'], array( 'fields' => 'names' ) );
echo $discount_value;
endforeach;
任何帮助将不胜感激。
答案 0 :(得分:1)
您只需要编写一个小的函数,即可找出哪个数组元素具有最高的折扣。
function find_highest_discount($discounts){
$max_discount=0;
foreach($discounts as $ds0){
if ($ds0['discount']>$max_discount) $max_discount=$ds0['discount'];
}
return $max_discount;
}
用法
$discounts = get_post_meta( $product->id, '_my_discounts' );
$highest_discount=find_highest_discount($discounts[0]);
更新:可以创建类似的函数以获取最小的数字。
function find_lowest_discount($discounts){
$min_discount=array_values($discounts)[0]['discount'];
foreach($discounts as $ds0){
if ($ds0['discount']<$min_discount) $min_discount=$ds0['discount'];
}
return $min_discount;
}