在产品页面上显示来自阵列的产品属性值

时间:2019-06-24 12:19:26

标签: php wordpress woocommerce

我正在使用以下代码在产品页面上检索并显示我的产品属性值:

$discounts = get_post_meta( $product->id, '_my_discounts' );

_my_discount是一个包含不同折扣的数组。每个折扣都包含不同的信息(min_qtydiscounttypeis_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;

任何帮助将不胜感激。

1 个答案:

答案 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;
}