关于此端点: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不支持对产品进行排序。我认为退货总是按标题排序。