将2D数组分为两个2D数组列列值

问题描述 投票:0回答:2

i提到了我的php数组对象,以下是

$arr ='[
{
    "id": 4667,
    "brand": "Michelin",
    "model": "Pilot Super Sport",
    "width": "255",
    "height": "35",
    "rim": "19",
},
{
    "id": 4668,
    "brand": "Michelin",
    "model": "Pilot Super Sport",
    "width": "275",
    "height": "35",
    "rim": "19",
},
{
    "id": 4669,
    "brand": "Pirelli",
    "model": "Zero",
    "width": "255",
    "height": "35",
    "rim": "19",
},
{
    "id": 4670,
    "brand": "Pirelli",
    "model": "Zero",
    "width": "275",
    "height": "35",
    "rim": "19",
}]';

我想根据宽度将阵列分为前后,如下所示。

$front = '[ { "id": 4667, "brand": "Michelin", "model": "Pilot Super Sport", "width": "255", "height": "35", "rim": "19", }, { "id": 4669, "brand": "Pirelli", "model": "Zero", "width": "255", "height": "35", "rim": "19", }]'; $rear = '[ { "id": 4668, "brand": "Michelin", "model": "Pilot Super Sport", "width": "275", "height": "35", "rim": "19", }, { "id": 4670, "brand": "Pirelli", "model": "Zero", "width": "275", "height": "35", "rim": "19", }]';
php可以在任何方法上比较每个对象宽度值并将其分组为匹配。请指教。感谢您的宝贵时间。
    

我认为您可以使用以下代码:
php arrays object multidimensional-array grouping
2个回答
1
投票
$arr='[{ "id": 4667, "brand": "Michelin", "model": "Pilot Super Sport", "width": "255", "height": "35", "rim": "19" }, { "id": 4668, "brand": "Michelin", "model": "Pilot Super Sport", "width": "275", "height": "35", "rim": "19" }, { "id": 4669, "brand": "Pirelli", "model": "Zero", "width": "255", "height": "35", "rim": "19" }, { "id": 4670, "brand": "Pirelli", "model": "Zero", "width": "275", "height": "35", "rim": "19" }]'; $front=[]; $rear=[]; foreach(json_decode($arr,true) as $key=>$val) { if($val['width']==255) { $front[]=$val; } else{ $rear[]=$val; } } $front=json_encode($front); $rear=json_encode($rear);

这对我来说是有用的,但需要简化

0
投票
$all = []; $front = []; $rear = []; for($i=0; $i<count($arr); $i++){ array_push($all, $arr[$i]->width); } $filter = array_unique($all); $max = max($filter); $min = min($filter); for($j=0; $j<count($arr); $j++){ if($arr[$j]->width == $max){ array_push($rear, $arr[$j]); } else if($arr[$j]->width == $min){ array_push($front, $arr[$j]); } else { echo 'Not Match'; } } echo "<script>console.log(".json_encode($front).")</script>"; echo "<script>console.log(".json_encode($rear).")</script>";


最新问题
© www.soinside.com 2019 - 2025. All rights reserved.