首页 > 解决方案 > 如何将条件数据附加到 JSON 的末尾

问题描述

我正在迭代模型关系

$formatted = [];
foreach($products->childProducts as $childProduct) {
        if($childProduct->product_type_id > 1) {
           $formatted['associated_products'][] = $this->coreProductInfo($childProduct);
       }
    }

有一个条件$childProduct->product_type_id,当 == 1 时,这些产品不应该附加到上面的数组中。相反,当上述数组完全准备好时,应在最后附加所有具有 product_type_id == 1 的产品。即当 product_type_id: 2,3,4... 都已经附加了。

我怎样才能做到这一点,以便所有类型 id 为 1 的产品都应附加到末尾?

预期结果:

[{
    "id": 1,
    "product_name": "Shirts",
    "product_category": "Men Garments",
    "product_area": "Western",
    "product_region": "Mumbai",
    "product_type_id": "2",
    "product_uuid": "398jehiu3939e3393"
},
{
    "id": 2,
    "product_name": "Trousers",
    "product_category": "Men Garments",
    "product_area": "Eastern",
    "product_region": "Mumbai",
    "product_type_id": "3",
    "product_uuid": "dnnja3989389834343"
},
{
    "id": 3,
    "product_name": "Jeggings",
    "product_category": "Women Garments",
    "product_area": "Western",
    "product_region": "Delhi",
    "product_type_id": "1",
    "product_uuid": "ji202039844930300dj"
}

]

标签: phplaravel

解决方案


最佳使用收藏..

    $formatted = collect();
    foreach($products->childProducts as $childProduct) {
        if($childProduct->product_type_id > 1) {
            $formatted->prepend($this->coreProductInfo($childProduct));
        } else {
            $formatted->push($this->coreProductInfo($childProduct));
        }
    }
    $formatted->toArray();

推荐阅读