Задать вопрос
Ответы пользователя по тегу PHP
  • Как удалить "противоположные" и "похожие" элементы массива?

    @WeStlik Автор вопроса
    Нашлось такое решение данного вопроса:
    spoiler
    $moves = [
        ['id' => 90415, 'oldDate' => '2024-08-27', 'newDate' => '2024-08-28'],
        ['id' => 90415, 'oldDate' => '2024-08-28', 'newDate' => '2024-08-27'],
        ['id' => 90409, 'oldDate' => '2024-08-21', 'newDate' => '2024-08-22'],
        ['id' => 90409, 'oldDate' => '2024-08-22', 'newDate' => '2024-08-23'],
        ];
    
    $data = [];
    foreach($moves as $move)
    {
        $id = $move['id'];
        if(isset($data[$id]))
        {
            // Если уже установлен такой ID, меняем значение newDate
            $data[$id]['newDate'] = $move['newDate'];
        }
        else
        {
            // Новый ID, заполняем элемент
            $data[$id] = $move;
        }
    }
    
    // Сохраняем значения только с разными значениям oldDate и newDate
    $result = array_filter($data, fn($move) => $move['oldDate'] != $move['newDate']);
    
    // Удаление ключей массива
    $result = array_values($result);
    
    var_export($result);

    Результат:
    array (
      0 => 
      array (
        'id' => 90409,
        'oldDate' => '2024-08-21',
        'newDate' => '2024-08-23',
      ),
    )
    Ответ написан
    Комментировать