为Google产品Feed操纵PHP数组

问题描述 投票:0回答:1

根据Google产品Feed(https://support.google.com/merchants/answer/7052112)的要求,我已有一个包含产品的PHP数组,其中包含各个字段... ID /标题/描述/链接/图像链接等。等等。

我的问题是,对于服装,Google希望为每种尺寸提供单独的记录。我的数组包含“大小”字段作为逗号分隔的列表,例如6,8,10,12,14或XS,S,M,L,XL等,等等。

因此,在创建供稿(一个文本文件,当前除了大小字段问题外,目前可以正常输出),对于每种大小,我需要复制每个ID,如果该字段中的大小超过1,请对每个大小进行复制,然后对字段进行操作这样一点(忽略所有将保持不变的重复字段),而不是单个记录:-

id     size                                    item group id
52     6,8,10,12,14,16,18,20,22,24,26

我有11条记录,项目组ID将是ID,ID后面附加大小,并且size字段只有一个(按原始记录的顺序排列,所以:-

id        size        item group id

52-6      6           52
52-8      8           52
.
..
...
52-24     24         52
52-26     26         52

这只是一种产品。。。有很多,每种都有多种尺寸,但是在产品数组中都采用相同的格式。

一如既往,非常感谢任何帮助/指针/解决方案!

ETA:

事实证明,我实际上没有$ product数组中的大小,它们是在foreach中的查询,用于在当前状态下构建供稿。

$ result是获取所有产品的查询...

$count = $dbA->count($result);
for ($f = 0; $f < $count; $f++) {
    $record = $dbA->fetch($result);

    $productSizes = "";
    $result2 = $dbA->query("SELECT $ExtraFieldsValues.content From $ExtraFields, $ExtraFieldsValues Where $ExtraFields.name = 'size' and $ExtraFields.extraFieldID = $ExtraFieldsValues.extraFieldID and $ExtraFieldsValues.prodID =".$record["prodID"]." Order By $ExtraFieldsValues.position");
    $count2 = $dbA->count($result2);
    for ($f2 = 0; $f2 < $count2; $f2++) {
        $record2 = $dbA->fetch($result2);
        $productSizes .= ",".$record2["content"];
    }
    if (strlen($productSizes) > 0){
        $productSizes = substr($productSizes,1);
    }

    echo $productSizes . '<br/>';
}

产品数组包含我上面引用的其他字段以及许多其他字段:-

Array
(
    [prodID] => 52
    [title] => widget
    [description] => for removing things
    [price] => 1.00 GBP
    .
    ..
    ...
)

但不包括项目组ID字段,对于每个产品,应将其添加为空白或如上填充。

我不确定这是否使它更容易或更难?

*更多编辑*

遍历数组以获取大小,后来又使feed输出混乱了,所以我改为将其更改为foreach。该计划是针对第一个foreach循环,根据需要操纵产品数组,然后执行一次单独的foreach遍历现在正确的数组以输出提要。这是我需要解决的问题:-

foreach ($result as $key => $thisProduct) {
    echo $thisProduct["prodID"] . '<br/>';

    $thisproductSizes = "";
    $sizesResult = $dbA->query("SELECT $ExtraFieldsValues.content From $ExtraFields, $ExtraFieldsValues Where $ExtraFields.name = 'size' and $ExtraFields.extraFieldID = $ExtraFieldsValues.extraFieldID and $ExtraFieldsValues.productID =".$thisProduct["prodID"]." Order By $ExtraFieldsValues.position");
    $sizesCount = $dbA->count($sizesResult);
    for ($sf2 = 0; $sf2 < $sizesCount; $sf2++) {
        $sizesRecord = $dbA->fetch($sizesResult);
        $thisproductSizes .= ",".$sizesRecord["content"];
    }
    if (strlen($thisproductSizes) > 0){ // there's at least one size so needs to be dealt with
        $thisproductSizes = substr($thisproductSizes,1);


        // do stuff here to make one product into many, each with item_group_id = prodID, and id = prodID-xx (size), and only one size



    } else {
        $thisproductSizes = "";
    }
    echo $thisproductSizes . '<br />';
}

但是,考虑一下,如果只有1个大小是可以的,那就是如果有2个或更多的大小就会出现问题...

根据Google产品Feed(https://support.google。的要求,ID /标题/描述/链接/图像链接等,我已经拥有一个包含各种字段的现有PHP产品。 com / ...

php multidimensional-array
1个回答
0
投票

您可以应用此foreach循环:

© www.soinside.com 2019 - 2024. All rights reserved.