В результате обработки ответа от vk api, получаю ассоциативный массив следующего вида:
$photo = [
"id" => 123456789,
"album_id" => -1,
"owner_id" => -123456789,
"user_id" => 123,
"photo_75" => "https://pp.userapi.com/c543108/v543108325/32081/LrpVe3GwjP0.jpg",
"photo_130" => "https://pp.userapi.com/c543108/v543108325/32082/NjQ-Gfsk1hg.jpg",
"photo_604" => "https://pp.userapi.com/c543108/v543108325/32083/U69oq8lmhO8.jpg",
"photo_807" => "https://pp.userapi.com/c543108/v543108325/32084/eJ-TYczImOI.jpg",
"photo_1280" => "https://pp.userapi.com/c543108/v543108325/32085/lX7pMrKFBsE.jpg",
"width" => 960,
"height" => 640,
"text" => "",
"date" => 1524633691,
"post_id" => 264727
];
Необходимо получить элемент с максимальным числом после "photo_", но загвоздка в том, что некоторых ключей может и не быть. Например, выше видно, что пришло только 5 размеров, но всего их 6 - есть ещё photo_2560. В зависимости от входящих параметров запроса ответ может быть разным. Могут придти все 6 размеров, могут только первые три(до photo_604 включительно) и т.п. Мне не важно сколько их придёт, нужно просто найти и получить максимальный размер.
Раньше я использовал довольно-таки некрасивую конструкцию с if-elseif-else, где проверял с помощью isset наличие ключа в массиве по убыванию(photo_2560 - photo_1280 - photo_807...) и если такой ключ находился, то уже дальше мог производить над ним необходимые мне манипуляции. Работало так, как нужно, но теперь мне не нравится такой вариант решения. Как лучше всего реализовать задуманное?
Ну если вам нужно другое решение, то более гибкий вариант таков:
$RESOLUTION = NULL;
// foreach ($photo as $key => $value) { - либо так, если хотите в цикле работать и со значениями
foreach(array_keys($photo) as $key) {
if ((substr($key, 0, 6) == 'photo_') AND ($RESOLUTION < substr($key, 6))) {
$RESOLUTION = substr($key, 6);
}
}
if (!is_null($RESOLUTION))
{
// Успешные действия
// $photo['photo_' . $RESOLUTION]
} else {
// Нет картинок, ошибка
}
P.S. Код подработаете под себя и возможно он не совсем оптимальный.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Зачастую редакторы статей могут испортить структуру статьи: убрать заголовок, или изменить жирность шрифта и так далееПоявилось желание...
При формировании данных на странице, до окончательной ее загрузке необходимо отобразить соответствующее сообщение, при окончании загрузки...
Каким способом в wordpress получить из БД ячейку BLOB? При помощи кода ниже удаётся только получить INT ячейкиКогда запрос идёт на BLOB ячейку, то возвращается...