如何使用 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'];
}
}
}
我检查重复值的代码:
$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'];
}
}
}