@gamma06
web dev

Минимальное значение в массиве?

Help me )
Как задать unique = 1 для массива у которого created является минимальным ?
array:2 [▼
  0 => array:6 [▼
    "id" => 1
    "created" => "2016-11"
    "unique" => 0
  ]
  1 => array:6 [▼
    "id" => 2
    "created" => "2016-12"
    "unique" => 0
  ]
]
  • Вопрос задан
  • 217 просмотров
Решения вопроса 1
profesor08
@profesor08 Куратор тега PHP
Это-же просто:

// вот ваш массив
$array = [
    [
        "id" => 1,
        "created" => "2016-11",
        "unique" => 0
    ],
    [
        "id" => 2,
        "created" => "2016-12",
        "unique" => 0
    ],
    [
        "id" => 3,
        "created" => "2016-10",
        "unique" => 0
    ]
];

// если есть что-то в массиве
if (count($array) > 0)
{
    // индекс минимального элемента, перед поиском будет первым
    $min = 0;
    
    foreach($array as $id => $row)
    {
        // если дата текущего элемента меньше даты элемента под номером $min, то пишем в $min пишем номер текущего элемента
        if (strtotime($row["created"]) < strtotime($array[$min]["created"]))
        {
            $min = $id;
        }
    }
    
    // устанавливаем unique = 1 элементу под номером $min
    $array[$min]["unique"] = 1;
}

print_r($array);
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
artem90
@artem90
TeamLead, Developer
usort($array, function ($el1, $el2) {
    $time1 = strtotime($el1['created']);
    $time2 = strtotime($el2['created']);

    return $time1 == $time2 ? 0 : ( $time1 < $time2 ? -1 : 1);
});

var_dump($array[0]); // Это будет элемент с минимальным created

Вместо strtotime, конечно, лучше использовать DateTime::createFromFormat с указанием точных параметров даты.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы