Maison > Questions et réponses > le corps du texte
J'ai ce tableau cart_items et il fonctionne bien lorsqu'il est mappé au stockage de base de données (comme indiqué dans le code).
$cart_items = [ {"id":8, "cart_id":7, "product_id":4, "variation_id":null, "quantity":1, "price":30, "tax":0, "attrs":null, "gross_total":30, "net_total":30, "tax_total":0, "product":{ "id":4, "parent_id":null, "category_id":1, "shop_id":1, "title":"Ladies Blazer", "unit":"item", "sale_price":30, "general_price":35 } }, { "id":9, "cart_id":7, "product_id":1, "variation_id":null, "quantity":2, "price":11, "tax":0, "attrs":null, "gross_total":22, "net_total":22, "tax_total":0, "product":{ "id":1, "parent_id":null, "category_id":2, "shop_id":2, "title":"Sport Bottles", "unit":"item", "sale_price":11, "general_price":9 } } ]
$line_item_params = $cart_items->map(function (CartItem $item) { $p = [ 'product_id' => $item->product_id, //add filtered shop_id here 'variation_id' => $item->variation_id, 'product_title' => $item->product->title, 'quantity' => $item->quantity, 'price' => $item->price, 'tax' => $item->tax, 'attrs' => $item->attrs, ]; return $p; })->toArray();
Je dois filtrer un tableau en utilisant Arr:where() où product shop_id est une valeur spécifique.
J'ai essayé d'utiliser la fonction if mais le code boucle et renvoie true là où shop_id existe.
$line_item_params = $cart_items->map(function (CartItem $item) { if ($item->product['shop_id'] == 1){ $p = [ 'product_id' => $item->product_id, //add filtered shop_id here //'shop_id' => $shop->id, 'variation_id' => $item->variation_id, 'product_title' => $item->product->title, 'quantity' => $item->quantity, 'price' => $item->price, 'tax' => $item->tax, 'attrs' => $item->attrs, ]; } return $p; })->toArray();
Je dois filtrer le tableau de produits shop_id sur une valeur spécifique.
P粉5127298622024-01-07 12:01:58
Je sais que cette solution n'est pas conseillée. Ce serait trop simple. Vous souhaitez utiliser les composants Laravel 9 pour ce faire. Je vais quand même vous le dire :
$shop_id = 1; $result = array_filter($arr, fn($v) => $v["product"]["shop_id"] == $shop_id);
Exemple complet : https://3v4l.org/19gnD