无法对Shopify产品API调用的响应进行排序



关于此端点:https://shopify.dev/docs/admin-api/rest/reference/products/product#index-2020-04

我用params中以逗号分隔的ID列表来调用它。我假设API返回的产品顺序与params中以逗号分隔的ID列表的顺序相同。事实似乎并非如此。

有没有办法让订单保持原样?

如果没有,事后还有其他方法吗?

以下是我的代码片段:

while($row = $result->fetch_array(MYSQLI_ASSOC)) {
$productIDs[] = (int)$row['product_id'];
}
$params = array(
'ids'        => implode(', ', $productIDs),
'fields' => 'title,handle,vendor,price,images'
);
$products = $shopify->Product()->get($params);

$products中产品的顺序与$productIDs中的产品的顺序不同。

知道为什么会这样,或者我如何才能得到匹配的订单吗?

我最终做了这个:

foreach($productIDs as $productID) {
foreach($products as $product) {
if ($productID == $product['id']) {                 
$sortedProducts[] = $product;
}
}
}

现在$sortedProducts本质上是$products变量,其排序与$productIDs中的顺序相匹配。

有比两个嵌套循环更好的方法吗?

这里有另一种方法:

usort($products, function($p1, $p2) use ($productIDs) {
$pos_p1 = array_search($p1['id'], $productIDs);
$pos_p2 = array_search($p2['id'], $productIDs);
return $pos_p1 - $pos_p2;
});

Shopify REST API不支持对产品进行排序。我认为退货总是按标题排序。

最新更新