PHP比较元素值并推送到数组

PHP比较元素值并推送到数组,php,foreach,Php,Foreach,我需要比较数组中具有相同elment值的元素,例如:$array[0]['change']==$array[1]['change'],如果为真,则进行数组推送 我有这样的数组 [ (int) 0 => [ 'id' => (int) 2, 'uuid' => 'c876e544-eca5-4ce1-8563-ed48ac74ebc2', 'change' => 'c876e544-eca5-4ce1-8563-ed4

我需要比较数组中具有相同elment值的元素,例如:$array[0]['change']==$array[1]['change'],如果为真,则进行数组推送

我有这样的数组

[
    (int) 0 => [
        'id' => (int) 2,
        'uuid' => 'c876e544-eca5-4ce1-8563-ed48ac74ebc2',
        'change' => 'c876e544-eca5-4ce1-8563-ed48ac74ebc2',
        'company_id' => (int) 18
    ],
    (int) 1 => [
        'id' => (int) 3,
        'uuid' => 'c3f388bc-9efb-4c72-b50e-3b6a9075d919',
        'change' => 'c876e544-eca5-4ce1-8563-ed48ac74ebc2',
        'company_id' => (int) 11
    ],
    (int) 2 => [
        'id' => (int) 4,
        'uuid' => 'fa37e5a4-3b5a-4f7d-915e-4807caa5949e',
        'change' => 'fa37e5a4-3b5a-4f7d-915e-4807caa5949e',
        'company_id' => (int) 17
    ],
    (int) 3 => [
        'id' => (int) 5,
        'uuid' => '52732822-11a9-4c00-8685-2493b88983f8',
        'change' => 'fa37e5a4-3b5a-4f7d-915e-4807caa5949e',
        'company_id' => (int) 19
    ],
    (int) 4 => [
        'id' => (int) 6,
        'uuid' => '9a356688-d08b-42ee-b26d-19d76bf6543b',
        'change' => '9a356688-d08b-42ee-b26d-19d76bf6543b',
        'company_id' => (int) 10
    ],
    (int) 5 => [
        'id' => (int) 7,
        'uuid' => '8dbe1a81-d722-4261-9b13-ef0b68cbb759',
        'change' => '8a356688-d08b-42ee-b26d-19d76bf6543b',
        'company_id' => (int) 18
    ],
    (int) 6 => [
        'id' => (int) 8,
        'uuid' => '701a896a-7d19-4cdd-80a4-f9ca7042945b',
        'change' => '701a896a-7d19-4cdd-80a4-f9ca7042945b',
        'company_id' => (int) 19
    ],
    (int) 7 => [
        'id' => (int) 9,
        'uuid' => '64e146bf-5d76-483f-992c-274cde1202ce',
        'change' => '601a896a-7d19-4cdd-80a4-f9ca7042945b',
        'company_id' => (int) 20
    ]
]
[
    (int) 0 => [
        (int) 0 => [
            'id' => (int) 2,
            'uuid' => 'c876e544-eca5-4ce1-8563-ed48ac74ebc2',
            'change' => 'c876e544-eca5-4ce1-8563-ed48ac74ebc2',
            'company_id' => (int) 18
        ],
        (int) 1 => [
            'id' => (int) 3,
            'uuid' => 'c3f388bc-9efb-4c72-b50e-3b6a9075d919',
            'change' => 'c876e544-eca5-4ce1-8563-ed48ac74ebc2',
            'company_id' => (int) 18
        ],
    ],
    (int) 1 => [
        (int) 0 => [
            'id' => (int) 4,
            'uuid' => 'fa37e5a4-3b5a-4f7d-915e-4807caa5949e',
            'change' => 'fa37e5a4-3b5a-4f7d-915e-4807caa5949e',
            'company_id' => (int) 18
        ],
        (int) 1 => [
            'id' => (int) 5,
            'uuid' => '52732822-11a9-4c00-8685-2493b88983f8',
            'change' => 'fa37e5a4-3b5a-4f7d-915e-4807caa5949e',
            'company_id' => (int) 18
        ],
    ],
    (int) 2 => [
        'id' => (int) 6,
        'uuid' => '9a356688-d08b-42ee-b26d-19d76bf6543b',
        'change' => '9a356688-d08b-42ee-b26d-19d76bf6543b',
        'company_id' => (int) 18
    ],
    (int) 3 => [
        'id' => (int) 7,
        'uuid' => '8dbe1a81-d722-4261-9b13-ef0b68cbb759',
        'change' => '8a356688-d08b-42ee-b26d-19d76bf6543b',
        'company_id' => (int) 18
    ],
    .
    .
    .   
]
我需要得到这样的结果

[
    (int) 0 => [
        'id' => (int) 2,
        'uuid' => 'c876e544-eca5-4ce1-8563-ed48ac74ebc2',
        'change' => 'c876e544-eca5-4ce1-8563-ed48ac74ebc2',
        'company_id' => (int) 18
    ],
    (int) 1 => [
        'id' => (int) 3,
        'uuid' => 'c3f388bc-9efb-4c72-b50e-3b6a9075d919',
        'change' => 'c876e544-eca5-4ce1-8563-ed48ac74ebc2',
        'company_id' => (int) 11
    ],
    (int) 2 => [
        'id' => (int) 4,
        'uuid' => 'fa37e5a4-3b5a-4f7d-915e-4807caa5949e',
        'change' => 'fa37e5a4-3b5a-4f7d-915e-4807caa5949e',
        'company_id' => (int) 17
    ],
    (int) 3 => [
        'id' => (int) 5,
        'uuid' => '52732822-11a9-4c00-8685-2493b88983f8',
        'change' => 'fa37e5a4-3b5a-4f7d-915e-4807caa5949e',
        'company_id' => (int) 19
    ],
    (int) 4 => [
        'id' => (int) 6,
        'uuid' => '9a356688-d08b-42ee-b26d-19d76bf6543b',
        'change' => '9a356688-d08b-42ee-b26d-19d76bf6543b',
        'company_id' => (int) 10
    ],
    (int) 5 => [
        'id' => (int) 7,
        'uuid' => '8dbe1a81-d722-4261-9b13-ef0b68cbb759',
        'change' => '8a356688-d08b-42ee-b26d-19d76bf6543b',
        'company_id' => (int) 18
    ],
    (int) 6 => [
        'id' => (int) 8,
        'uuid' => '701a896a-7d19-4cdd-80a4-f9ca7042945b',
        'change' => '701a896a-7d19-4cdd-80a4-f9ca7042945b',
        'company_id' => (int) 19
    ],
    (int) 7 => [
        'id' => (int) 9,
        'uuid' => '64e146bf-5d76-483f-992c-274cde1202ce',
        'change' => '601a896a-7d19-4cdd-80a4-f9ca7042945b',
        'company_id' => (int) 20
    ]
]
[
    (int) 0 => [
        (int) 0 => [
            'id' => (int) 2,
            'uuid' => 'c876e544-eca5-4ce1-8563-ed48ac74ebc2',
            'change' => 'c876e544-eca5-4ce1-8563-ed48ac74ebc2',
            'company_id' => (int) 18
        ],
        (int) 1 => [
            'id' => (int) 3,
            'uuid' => 'c3f388bc-9efb-4c72-b50e-3b6a9075d919',
            'change' => 'c876e544-eca5-4ce1-8563-ed48ac74ebc2',
            'company_id' => (int) 18
        ],
    ],
    (int) 1 => [
        (int) 0 => [
            'id' => (int) 4,
            'uuid' => 'fa37e5a4-3b5a-4f7d-915e-4807caa5949e',
            'change' => 'fa37e5a4-3b5a-4f7d-915e-4807caa5949e',
            'company_id' => (int) 18
        ],
        (int) 1 => [
            'id' => (int) 5,
            'uuid' => '52732822-11a9-4c00-8685-2493b88983f8',
            'change' => 'fa37e5a4-3b5a-4f7d-915e-4807caa5949e',
            'company_id' => (int) 18
        ],
    ],
    (int) 2 => [
        'id' => (int) 6,
        'uuid' => '9a356688-d08b-42ee-b26d-19d76bf6543b',
        'change' => '9a356688-d08b-42ee-b26d-19d76bf6543b',
        'company_id' => (int) 18
    ],
    (int) 3 => [
        'id' => (int) 7,
        'uuid' => '8dbe1a81-d722-4261-9b13-ef0b68cbb759',
        'change' => '8a356688-d08b-42ee-b26d-19d76bf6543b',
        'company_id' => (int) 18
    ],
    .
    .
    .   
]
我试着制作两个数组,一个值相同,另一个值不同,然后进行合并,但结果不是我想要的。。。我希望有一个“更好”的解决方案(也许更易读的逻辑)


谢谢大家!

您可以使用foreach或array_map,如下所示:

$arrays = [
    ['change' => 'c876e544-eca5-4ce1-8563-ed48ac74ebc2'],
    ['change' => 'c876e544-eca5-4ce1-8563-ed48ac74ebc2'],
    ['change' => 'fa37e5a4-3b5a-4f7d-915e-4807caa5949e'],
    ['change' => 'fa37e5a4-3b5a-4f7d-915e-4807caa5949e'],
    ['change' => '9a356688-d08b-42ee-b26d-19d76bf6543b'],
    ['change' => '8a356688-d08b-42ee-b26d-19d76bf6543b'],
    ['change' => '701a896a-7d19-4cdd-80a4-f9ca7042945b'],
    ['change' => '601a896a-7d19-4cdd-80a4-f9ca7042945b'],
];

$list = [];
foreach ($arrays as $array) {
    $list[$array['change']][] = $array;
}

print_r(array_values($list));

// if you would like to use array_map instead

$list = [];
array_map(function ($array) use (&$list) {
    $list[$array['change']][] = $array;
}, $arrays);

print_r(array_values($list));

现场演示:

您可以使用foreach或array\u map,如下所示:

$arrays = [
    ['change' => 'c876e544-eca5-4ce1-8563-ed48ac74ebc2'],
    ['change' => 'c876e544-eca5-4ce1-8563-ed48ac74ebc2'],
    ['change' => 'fa37e5a4-3b5a-4f7d-915e-4807caa5949e'],
    ['change' => 'fa37e5a4-3b5a-4f7d-915e-4807caa5949e'],
    ['change' => '9a356688-d08b-42ee-b26d-19d76bf6543b'],
    ['change' => '8a356688-d08b-42ee-b26d-19d76bf6543b'],
    ['change' => '701a896a-7d19-4cdd-80a4-f9ca7042945b'],
    ['change' => '601a896a-7d19-4cdd-80a4-f9ca7042945b'],
];

$list = [];
foreach ($arrays as $array) {
    $list[$array['change']][] = $array;
}

print_r(array_values($list));

// if you would like to use array_map instead

$list = [];
array_map(function ($array) use (&$list) {
    $list[$array['change']][] = $array;
}, $arrays);

print_r(array_values($list));

现场演示:

使用以下方法:

$result = [];
foreach ($order->items as $item) {
    if (isset($result[$item['change']])) {
        // check if nested array is a single item(not multidimensional) 
        if (isset($result[$item['change']]['change'])) {
            $result[$item['change']] = [$result[$item['change']], $item];
        } else {
            $result[$item['change']][] = $item;
        }
    } else {
        $result[$item['change']] = $item;
    }
}

$result = array_values($result);

使用以下方法:

$result = [];
foreach ($order->items as $item) {
    if (isset($result[$item['change']])) {
        // check if nested array is a single item(not multidimensional) 
        if (isset($result[$item['change']]['change'])) {
            $result[$item['change']] = [$result[$item['change']], $item];
        } else {
            $result[$item['change']][] = $item;
        }
    } else {
        $result[$item['change']] = $item;
    }
}

$result = array_values($result);