Вы можете получить один элемент, запустив
document.querySelector('.myElement').style.size = '100px';
, но он будет работать для первого элемента с классом .myElement.
Если вы хотите применить это для всех элементы с классом я предлагаю вам использовать
document.querySelectorAll('.myElement').forEach(function(element) {
element.style.size = '100px';
});
Что-то вроде следующего должно начать:
<?php
function sortDate($a, $b) {
return strtotime($a['date']) - strtotime($b['date']);
}
$input = array('info' => array(array('id' => 2, 'date' => '2019-04-11'), array('id' => 1, 'date' => '2010-05-15')));
usort($input['info'], 'sortDate');
print_r($input);
Используйте uasort для сортировки массива с пользовательской функцией и strtotime для анализа даты на метку времени.
$json = '
{"info":[
{"id":1, "title":"original title", "name":"john doe", "date":"2010-05-15"},
{"id":2, "title":"another title", "name":"foo bar", "date":"2009-04-11"}
]
}';
$arr = json_decode($json)->info;
uasort($arr, function($item1, $item2){
return strtotime($item1->date) > strtotime($item2->date);
});
Выведет
Array
(
[1] => stdClass Object
(
[id] => 2
[title] => another title
[name] => foo bar
[date] => 2009-04-11
)
[0] => stdClass Object
(
[id] => 1
[title] => original title
[name] => john doe
[date] => 2010-05-15
)
)
uasort
, потому что клавиши являются числовыми, и упорядочение их, поддерживая числовые клавиши, может быть невероятно запутанным (в вашем выходе 0
появляется после 1
).
– Ry-♦
21 March 2012 в 18:42
Сначала вы должны преобразовать дату в сортируемый формат. Я думаю, что strtotime()
выполняет эту работу. После этого вы можете выводить все с помощью strftime()
.
Вы можете использовать usort
и пользовательскую функцию сравнения:
$data = '{"info":[{"id":1, "title":"original title", "name":"john doe", "date":"2010-05-15"}, {"id":2, "title":"another title", "name":"foo bar", "date":"2009-04-11"}]}';
$info = json_decode($data, true)['info'];
usort($info, function ($a, $b) {
return $a['date'] <=> $b['date'];
});
<=>
работает здесь, потому что сравнение строк также является сопоставлением даты, когда ваши даты форматируются как YYYY-MM-DD.
Затем, чтобы показать значение года для записи, вы можете проанализировать дату в DateTime
и переформатировать ее:
$date = DateTime::createFromFormat('Y-m-d', $item['date']);
$year = $date->format('Y');
return ($dA > $dB)
– joshuahedlund
9 July 2018 в 15:25
usort
не ожидает логического возврата, но вы правы, не имеет смысла сравнивать только год, даже если вы показываете только год.
– Ry-♦
9 July 2018 в 15:41