如何使用 php 中的产品变体?

How to work with product variations in php?

我检查重复值的代码:

$where = "`product_id` = '$id'";

$variationsavailable = $object->getWhere('variations', $where);
foreach ($variationsavailable as $current_key => $variation)
{
    foreach ($variationsavailable as $search_key => $search_variation)
    {
        if ($search_variation['color'] == $variation['color'])
        {
            if ($search_key != $current_key)
            {
                //  echo "duplicate found: $search_key<br>";
                // $newvariationsavailable=array_unique($variationsavailable[$current_key]);
                // print_r($search_variation);
                
            }
        }
    }
}

这些是 4 个产品变体($variation)(第一个 foreach 循环后的输出):

    Array
(
    [id] => 20
    [product_id] => AS_61e2c8ba1a1377.90699826398377
    [variation_id] => VAR61e6b21e828584.567773554505
    [size] => Medium
    [color] => Yellow
    [stock] => 120
    [status] => 1
)
Array
(
    [id] => 21
    [product_id] => AS_61e2c8ba1a1377.90699826398377
    [variation_id] => VAR61e6b21e82a2b2.733304005041
    [size] => Small
    [color] => Yellow
    [stock] => 120
    [status] => 1
)
Array
(
    [id] => 22
    [product_id] => AS_61e2c8ba1a1377.90699826398377
    [variation_id] => VAR61e6b21e82ac02.349275567750
    [size] => Small
    [color] => White
    [stock] => 120
    [status] => 1
)
Array
(
    [id] => 23
    [product_id] => AS_61e2c8ba1a1377.90699826398377
    [variation_id] => VAR61e6b21e82b483.245499117421
    [size] => Large
    [color] => White
    [stock] => 120
    [status] => 1
)

当我运行 foreach 循环显示大小和颜色时

foreach ($variationsavailable as $current_key => $variation) {    
        echo $variation['size'];
        echo $variation['color']; 
}

当前输出:

SIZE: Medium, Small, Small, Large COLOR: Yellow, Yellow, White, White

如何只显示一次重复值?

期望输出:

SIZE: Medium, Small, Large COLOR: Yellow, White

我会创建一个额外的数组来放入所有已经打印出来的尺寸和颜色。

$duplicatearray = array();
$i = 0;
foreach ($variationsavailable as $current_key => $variation) {    
        //Check if its the first iteration so we dont need to check if its in the 
        //duplicate array
        if($i < 1){
            echo $variation['size'];
            echo $variation['color'];
            duplicatearray['size'][] = $variation['size']; 
            duplicatearray['color'][] = $variation['color'];  
            $i++;
        }
        else{
            //Check if the size is in the duplicatearray, if not then print it
            if(!in_array($variation['size'], $duplicatearray['size'])){
                echo $variation['size'];
                duplicatearray['size'][] = $variation['size']; 
            }
            //Check if the color is in the duplicatearray, if not then print it
            if(!in_array($variation['color'], $duplicatearray['color'])){
                echo $variation['color']; 
                duplicatearray['color'][] = $variation['color'];  
            }    
        
        }
}