无法对 Shopify 产品 API 调用的响应进行排序
Cannot sort response of Shopify Product API call
关于这个端点:https://shopify.dev/docs/admin-api/rest/reference/products/product#index-2020-04
我在参数中使用逗号分隔的 ID 列表来调用它。我假设 API 返回的产品顺序与参数中以逗号分隔的 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 不支持对产品进行排序。我认为返回的产品总是按标题排序。
关于这个端点:https://shopify.dev/docs/admin-api/rest/reference/products/product#index-2020-04
我在参数中使用逗号分隔的 ID 列表来调用它。我假设 API 返回的产品顺序与参数中以逗号分隔的 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 不支持对产品进行排序。我认为返回的产品总是按标题排序。